Vue基础02:vue中的指令

本文详细介绍了Vue.js中的指令如v-for、v-if/v-show、v-once、v-model等的使用,包括它们的功能、语法糖以及在实际应用中的注意事项。通过示例代码展示了如何循环遍历数组、对象和数字,以及事件绑定和动态属性绑定。同时,文章还提到了v-once指令在防止重复渲染方面的优势,以及v-model在输入元素双向数据绑定上的便利性。

更多详情在github仓库中:myVueWp 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="../node_modules/vue/dist/vue.js"></script>

    <!-- 
        vue 中的指令: 以 v-开头, 有特定功能,操作dom元素
     -->
     <!-- 
         v-for 指令,循环操作数据:{} 、 [], String
         1. for (let a of arr) ;  v-for="v in arr"  与 v-for="v of arr" 效果一样
         2. vue2.5+ 版本要求循环的时候,必须增加key属性,为了左dom区分
         3. v-bind 是动态绑定属性,所有属性中的值,都是我们的变量,如果要是字符串需要加双引号;
             v-bind:a  简写为 :a
         4. template vue 自带的标签,无意义的标签。template上不能增加key属性,需要给真实的元素添加key
         5. 多个元素,需要区分名称,可以使用模版字符串;
         6. v-for="value,key" ,key 是索引,尽量不要用key来渲染
            <li a:key>{{value}}</li>  如果将<li> 重排序,由于key 相同,vlaue不同,会导致重新创建dom,会导致性能浪费

        v-if/v-else  , v-show
          1. v-if=""  里面可以放变量,数字,字符串
             v-if 和 v-show 的区别,if 处理dom是否添加到页面上,show是样式的操作(是否显示dom)show不支持template的写法

        8. v-on 绑定事件, 可以简写成 @ 符号, 并且事件参数是 $event;
        9. v-once 只渲染一次,渲染后会产生缓存,下次更新时,会直接从缓存中获取,v-once可以有效防止重新渲染
        10. v-on:input
        11. 语法糖: v-model
      -->
      <div id="app">
          <!-- <div v-for="v,index of arr" v-bind:a="index">{{v}},{{index}}</div> -->
          <!-- <div v-for="v,index in arr" v-bind:a="index">{{v}},{{index}}</div> -->
          <template v-for="v,index in arr">
              <li :a="index+'_1'">{{v}} {{index}}</li>
              <li :a=`${index}_2`>{{v}} {{index}}</li>
          </template>

          <!-- 循环一个对象 -->
          <template v-for="value,key in {a:1}">
              <li>{{value}}, {{key}}</li>
          </template>


          <!-- 循环一个数字 -->
          <template v-for="value,key in 5">
              <li>{{value}},{{key}}</li>
          </template>

          <div v-show="true">
              hello
          </div>
          <div v-show="false">
              world
          </div>
          <!-- 对动态的数据,尽量不要用key来渲染,可能会导致性能浪费 -->


          <!-- 绑定事件: 可以将 v-on:click 简写为 @click  -->
          <div>{{flag}}</div>
          <!-- <button v-on:click="fn">DemoBut</button>÷ -->
          <!--  传输一个空参数 -->
          <!-- <button v-on:click="fn()">DemoBut</button> -->
          <!-- 传递原生到e事件 -->
          <!-- <button v-on:click="fn($event)">DemoBut</button> -->
          <button @click="fn($event)">DemoBut</button>

          <!-- 演示一个vue复用input到案例. 添加一个 key 就不再复用input, 切换到时候input被清空 -->
          <div v-if="flag">
              name 
              <input value="" key="1">
          </div>
          <div v-else>
              value<input value="" key="2">
          </div>
          <!-- 只渲染一次,渲染后会产生缓存,下次更新时,会直接从缓存中获取,v-once可以有效防止重新渲染 -->
          <div v-once>{{flag}}</div>

          <div>{{element}}</div>
          <div v-html="element"></div>

          <!-- 语法糖 -->
          <!-- <input type="text" v-bind:value="element" v-on:input="(e)=>{this.element=e.target.value}"> -->
          <input type="text" :value="element" @input="(e)=>{this.element=e.target.value}">
          <!-- 上面两句可简写为下面一句, 这种简写被称为语法糖 -->
          <input type="text" v-model="element">
      </div>

      
      <script>
          // 所有的数据都会合并到vm到示例上,但是会被data覆盖掉,不要声明相同到名字
          let vm = new Vue({
              el: "#app",
              // data中不能用this
              data: {
                  flag: true,
                  arr: [1,2,3,4,5],
                  element: "<h1>hello</h1>"
              },
              // 方法要放到methods中
              methods: {
                  fn(e){
                    //  原生到e事件
                    console.log(e);
                    console.log(this);
                    this.flag=!this.flag
                  }
              }
          });
      </script>
</body>
</html>

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值