1.v-for遍历普通数组

in前面如果是一个变量,那么该变量保存的是数组中的数据in前面如果是两个变量,那么第一个变量保存的是数组中的数据,第二个变量保存的是下标

                Document                            
  • {{index}}-{{item}}
new Vue({ el: '#app', data: { list: ['猪方', '战神', '小金子', '楠神'] }, methods: { add() { this.list.push('黑牛') } }, })

2.v-for遍历对象

如果是一个变量,那么保存的是对象中的属性值

如果是两个变量,那么第一个变量保存的是属性值,第二个变量保存的是属性名

如果是三个变量,那么第一个变量保存的是属性值,第二个变量保存的是属性名,第三个变量保存的是下标

v-for=”o1 in obj” o1:属性值

v-for=”(o1,o2) in obj” o1:属性值 o2:属性名

v-for=”(o1,o2,o3) in obj” o1:属性值 o2:属性名 o3:下标

                Document            
  • {{item}}

  • {{ key }}-{{ val }}
new Vue({ el: '#app', data: { obj: { name: '卡拉米', age: 16, sex: '男', } } })

3.v-for循环数字

in后面不仅可以放数组、对象数组、对象,还可以放数字

在in前面用一个变量存储当前次数,注意:此变量是从1开始,而不是从0开始

                Document            
  • {{num}}
new Vue({ el: '#app', })

4. Key是什么?

Key 特殊属性主要用做 Vue 的虚拟 DOM 算法在将新节点列表与旧列表进行比较时识别 VNode 的提示。在没有键的情况下,Vue 使用一种算法来最小化元素移动,并尝试尽可能多地就地修补/重用相同类型的元素。使用键,它将根据键的顺序更改对元素进行重新排序,并且不再存在键的元素将始终被删除/销毁。

5.有无Key值不同调用方法

Vue内部会对有无Key值的for循环进行不同方法的处理

(1) patchKeyedChildren

有 Key, 进行 patchKeyedChildren

                Document                            
  • {{item.name}}
new Vue({ el:'#app', data:{ list:[ {name:'战神',age:18,sex:'男',id:1}, {name:'金子',age:18,sex:'男',id:2}, {name:'铜牌',age:18,sex:'男',id:3} ] } })

(2)patchUnKeyedChildren

没有 Key ,进行 patchUnKeyedChildren

                Document                            
  • {{item.name}}
new Vue({ el:'#app', data:{ list:[ {name:'战神',age:18,sex:'男',id:1}, {name:'金子',age:18,sex:'男',id:2}, {name:'铜牌',age:18,sex:'男',id:3} ] } })