v-for的用法

//js中的foreach
[5,7,9].forEach((item,i)=>{console.log(item+'+'+i)})

 

普通数组

<div id="app">
        <!-- value和i为自定义名称,可以改,意义不变 -->
        <p v-for="(value,i) in list">索引值:{{i}}     每一项是:{{value}}</p>
        
    </div>
    <script >
        var vm = new Vue({
            el:'#app',
            data:{
                list:[1,2,3,4,5,6]
            },
            methods:{
                
            }
        })

        //[5,7,9].forEach((item,i)=>{console.log(item+'+'+i)})
    </script>

对象数组

<div id="app">
        <!-- value和i为自定义名称,可以改,意义不变 -->
        <p v-for="user in list2">id:{{user.id}}     name:{{user.name}}</p>
        
        <!-- 可以查看索引值 -->
        <p v-for="(user,i) in list2">id:{{user.id}}     name:{{user.name}}   索引值{{i}}</p>

        
    </div>
    <script >
        var vm = new Vue({
            el:'#app',
            data:{
                list:[1,2,3,4,5,6],
                list2:[
                { id:1,name:'xzy1'},
                { id:2,name:'xzy2'},
                { id:3,name:'xzy3'},
                { id:4,name:'xzy4'},
                ]
            },
            methods:{
                
            }
        })

 

 

 循环对象

<div id="app">
        <!-- 在遍历对象身上的键和值的时候,除了有值,键,在第三个位置还有索引 -->
        
        <p v-for="(val,key,i) in userr">值是:{{val}}     键是:{{key}}   索引值是:{{i}}</p>

        
    </div>
    <script >
        var vm = new Vue({
            el:'#app',
            data:{
                list:[1,2,3,4,5,6],
                list2:[
                { id:1,name:'xzy1'},
                { id:2,name:'xzy2'},
                { id:3,name:'xzy3'},
                { id:4,name:'xzy4'},
                ],
                userr:{
                    id:1,
                    name:'xzy!',
                    gender:''
                }
            },
            methods:{
                
            }
        })

 

 

 迭代数字

<div id="app">
        <!-- in后面能放数字,但是count从1开始 -->
        
        <p v-for="count in 10">第{{count}}次循环</p>

        
    </div>

 

 

  •  v-for要写在循环生成的元素上,不能写在父元素里
  • 当new Vue()扫瞄到v-for,自动遍历of后数组中每个元素,每遍历一个元素,创建一个当前html元素的副本
  • value和i的使用范围仅限于当前元素及其子元素范围内,不能在当前元素外使用

v-for的注意事项

当在组件中使用v-for时,key属性必需,对比如下:

当不使用key属性时,选中大二,然后在list数组的起始位置增加一个对象(使用unshift),增加完成后,checkbox变成选中大一。

<body>
    <div id="app">
        <div>
            <label>ID:<input type="text" v-model="id"></label>
            <label>Name:<input type="text" v-model="name"></label>
            <input type="button" value="添加" v-on:click="add()">
        </div>
        <p v-for="item in list2">
            <input type="checkbox">
            {{item.name}}
        </p>

        
    </div>
    <script >
        var vm = new Vue({
            el:'#app',
            data:{
                name:'',
                id:'',
                
                list2:[
                { id:1,name:'大一'},
                { id:2,name:'大二'},
                { id:3,name:'大三'},
                { id:4,name:'大四'},
                ]
            },
            methods:{
                add(){
                    this.list2.unshift({id:this.id,name:this.name})
                }
            }
        })

    </script>

 

 

 使用key之后

在组件中,使用v-for循环的时候,或者在一些特殊情况下,如果v-for有问题,必需在使用v-for的同时指定唯一的:key值

<p v-for="item in list2" v-bind:key='item'>