v-for的四種使用方式以及v-for中key的注意事項


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'>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM