13.for循环中key属性的使用.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>

<script src="./lib/vue.min.js"></script>

</head>

<body>

     <div id="app">
          <!-- 添加checkbox的功能 -->
          <label>Id:
            <input type="text" v-model:value="inputid">
          </label>

          <label>Name:
                <input type="text" v-model:value="name">
          </label>

          <input type="button" value="添加checkbox的功能" @click='add'>

          <p v-for="item in list">
            <input type="checkbox">{{item.name}}
          </p>

     </div>

     <div id="app2">
            <!-- 添加checkbox的功能 -->
            <label>Id:
              <input type="text" v-model:value="inputid">
            </label>
  
            <label>Name:
                  <input type="text" v-model:value="name">
            </label>
  
            <input type="button" value="添加checkbox的功能" @click='add'>
  
            <p v-for="item in list">
              <input type="checkbox">{{item.name}}
            </p>
  
       </div>

       <div id="app3">
            <!-- 添加checkbox的功能 -->
            <label>Id:
              <input type="text" v-model:value="inputid">
            </label>
  
            <label>Name:
                  <input type="text" v-model:value="name">
            </label>
  
            <input type="button" value="添加checkbox的功能" @click='add'>
  
            <!-- 注意: v-for循环的时候 用key属性的话 key属性只能用number类型的值或者string类型的值
                即: :key的值类型 必须是数字类型或者字符串类型
                而对象类型 是不可以的 比如<p v-for="item in list" :key="item">
                如本例中的 只能用list数组中对象的id属性或name属性 -->
            <p v-for="item in list" :key="item.id">
              <input type="checkbox">{{item.name}}
            </p>
  
       </div>


     <script>

        //正确的方式1
        var vm = new Vue({
             el : '#app',
             data : {
                inputid : '',
                name : '',
                list : [
                 {id : 1,name : '张三1'},
                 {id : 2,name : '张三2'},
                 {id : 3,name : '张三3'},
                 {id : 4,name : '张三4'},
                 {id : 5,name : '张三5'}
             ]
            },
            methods : {
                add(){
                    //push向数组的尾添加一个或更多元素,并返回新的长度。
                    //添加checkbox
                    this.list.push({id : this.id,name : this.name});
                }
            }
        });

        //错误的方式
        var vm2 = new Vue({
             el : '#app2',
             data : {
                inputid : '',
                name : '',
                list : [
                 {id : 1,name : '张三1'},
                 {id : 2,name : '张三2'},
                 {id : 3,name : '张三3'},
                 {id : 4,name : '张三4'},
                 {id : 5,name : '张三5'}
             ]
            },
            methods : {
                add(){
                    //unshift向数组的开头添加一个或更多元素,并返回新的长度。
                    //添加checkbox
                    //问题出现 你开始勾选数组下标为4 也就是id=5的那条数据 当添加一个checkbox id=6 name="张三6"
                    //的数据后 发现勾选的选项错位了 勾选的虽然还是数组下标的4的 但是发现勾选的却是
                    //另一条数组下标为4的数据
                    this.list.unshift({id : this.id,name : this.name});
                }
            }
        });

        //正确的方式2 v-for 加上遍历的key
        var vm3 = new Vue({
             el : '#app3',
             data : {
                inputid : '',
                name : '',
                list : [
                 {id : 1,name : '张三1'},
                 {id : 2,name : '张三2'},
                 {id : 3,name : '张三3'},
                 {id : 4,name : '张三4'},
                 {id : 5,name : '张三5'}
             ]
            },
            methods : {
                add(){
                    //unshift向数组的开头添加一个或更多元素,并返回新的长度。
                    //添加checkbox
                    this.list.unshift({id : this.id,name : this.name});
                }
            }
        });

     </script>

</body>

</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值