IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue 3 day(1) -> 正文阅读

[JavaScript知识库]vue 3 day(1)

一、基本语法

1.1 变量的定义

  • 定义变量
export default {
  data() {
    return {
      name: "jack",
      name1:"rose",
      name2:"lili"
    }
  },
}
  • 使用变量
  <div class="about" id="about">
    <h1>This is an about page</h1>
    <MyAddress></MyAddress>
    <p>{{name}}</p>
    <p>{{name1}}</p>
    <p>{{name2}}</p>
    <p>{{getData()}}</p>
  </div>

1.2 方法的定义

  • 方法的定义
  methods:{
    getData(){
      this.name = "jackssss";
      console.log("要输出名字了",this.name)
    }
  },
  • 方法的使用
 <div class="about" id="about">
    <h1>This is an about page</h1>
    <p>{{getData()}}</p>
  </div>

1.3 调用另一个组件

  • 导入组件
import Address from  "@/views/Address"
  • 注册组件
components:{
    MyAddress:Address
  }
  • 使用组件
  <div class="about" id="about">
    <h1>This is an about page</h1>
    <MyAddress></MyAddress>
  </div>

1.4 v-show,v-if,v-html

<template>
  <div class="about" id="about">
   <div v-html="innerMsg" v-show="show" v-if="exist"></div>
  </div>
</template>
<script>


export default {
  data() {
    return {
      innerMsg:"<p>这是一个内置的标签</p>",
      show: false,
      exist: true,
    }
  },
}
</script>

1.5 v-for,必须加key

  • 遍历数组
<template>
  <div id="app">
    <p v-for="key in order" :key="key">
      {{key}}
    </p>
  </div>
</template>
<script>
export default {
  data() {
    return {
     order:["111","222","333","444","555"]
    }
  }
}
</script>
  • 遍历结构体数组
  • (key,i):key是结构体的值,i是下标
<template>
  <div id="app">
    <p v-for="(key,value) in student" :key="key">
      {{key.id}}---{{key.name}}--{{key.age}}---{{value}}
    </p>
  </div>
</template>
<script>
export default {
  data() {
    return {
     order:["111","222","333","444","555"],
     student:[
       {id:1,name:"jack",age:12},
       {id:2,name:"rise",age:12},
       {id:3,name:"robin",age:12},
     ]
    }
  }
}
</script>

1.6 单选框展示

<template>
  <div id="app">
   <input type="radio" v-model="hobby" value="游泳">swim
   <input type="radio" v-model="hobby" value="打兵乓球">ping-pong
   <input type="radio" v-model="hobby" value="打羽毛球">table-tennis
  </div>
  <button @click="showHobby()">点击</button>
</template>
<script>
export default{
  data() {
    return {
      hobby:[]
    }
  },
  methods:{
    showHobby(){
      console.log(this.hobby)
    }
  }
}
</script>

在这里插入图片描述

1.7 复选框

  • type:radio,单选
  • type:checkbox,复选
<input type="checkbox" v-model="hobby" value="游泳">swim

1.9 减少,增加商品数量

  • 可以在点击事件中传入遍历的对象实例
<template>
  <div id="app">
     <p v-for="item in goods" :key="item.name">
       {{item.name}}---{{item.number}}
       <button @click="changeNumberAdd(item)">+</button>
       <button @click="changeNumberReduce(item)">-</button>
     </p>
  </div>
</template>
<script>
export default{
  data() {
    return {
      goods:[{
        name:"anple",
        number:9,
      },
      {
        name:"banana",
        number:9,
      },
      {
        name:"strawberry",
        number:9,
      },
      ],
      cal:''
    }
  },
  methods:{
    changeNumberAdd(item){
        console.log("商品的数量",item.number)
        item.number ++;
    },
     changeNumberReduce(item){
       console.log("商品的数量",item.number)
       if(item.number >= 1)
        item.number --;
    }
  }
}
</script>
  • 对上述代码的简化
    changeNumber(item,event){
      var inner = event.currentTarget.innerHTML;
      if(inner == '+'){
        item.number ++;
      }
      if(inner =='-' && item.number >= 1){
        item.number --;
      }
    }

二、出错

2.1 v-for报错

  • v-for必须添加key

三、琐碎知识

3.1 ref

  • 方法,同ref会以第后面的为准
  • 获取标签的value
    console.log(this.$refs.button.value)
  • 获取标签的innerHtml
    console.log(this.$refs.button.innerHTML)
 <button @click="changeNumberAdd(item)" ref="button" value="and">+</button>

3.2 通过id获取元素间的innerHTML

  • 方法,同id会以第一个为准console.log(document.getElementById(‘button’).innerHTML)
<button @click="changeNumberAdd(item)" ref="button" value="and" id="button">+</button>
       <button @click="changeNumberReduce(item)" ref="button"  value="red" id="button">-</button>

3.3 通过click事件得到元素的innerHtml

  • 传入event
<button @click="changeNumberAdd(item,$event)" ref="button" value="" id="button">+</button>
  • 得到event
  changeNumberAdd(item ,event){
        item.number ++;
        var el = event.currentTarget.innerHTML
         var ele = event.target.innerHTML
        console.log(el,ele)
        console.log("商品的数量",item.number)
    },

参考:vue.js click点击事件获取当前元素对象

3.4 冒泡事件

  • 点击li,出发li的click事件,也会引起ul的click事件,就像泡泡一样往上冒
<template>
  <div id="app">
    <ul @click="click1()">
      <li @click="click2()">ppp</li>
    </ul>
  </div>
</template>
<script>
export default{
  data() {
    return {
    }
  },
  methods:{
    click1(){
      console.log("这是一个冒泡")
    },
    click2(){
      console.log("这也是一个冒泡")
    }
  }
}
</script>
  • 冒泡事件的阻止
    @click.stop
<ul @click="click1()">ll
      <li @click.stop="click2()">ppp</li>
    </ul>

四、高级知识

4.1 fetch获取data.json中的数据

  • 注意:data.json存放在public路径下,而且他不认json文件的绝对路径
   methods:{
       getResource(){
           fetch("data.json").then(res=>{
               return res.json()
           }).then(res=>{
               console.log("得到数据")
               console.log(res[0].name,res[0].age, res[0].address)
           })
       }
   }

在这里插入图片描述

4.2 axios获取data.json中的数据

  • let axios = require(‘axios’)
 methods:{
       getResource(){
           fetch("data.json").then(res=>{
               return res.json()
           }).then(res=>{
               console.log("得到数据")
               console.log(res)
               console.log('axios',axios)
           })
       },
       getResByAxios(){
           axios.get('data.json').then(response=>{
               console.log("response",response.data)
           }).catch(error=>{
               console.log(error)
           })
       },
       getResAxiosConfig(){
           axios({
               methods:'get',
               data:{
                name:'jack',
               },
               url:'data.json',
               timeout: 1000,
           }).then(res=>{
               console.log("得到自己的一些数据",res.data)
           })
       }

   }
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-20 18:18:19  更:2021-11-20 18:19:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:33:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码