列表渲染
(1) v-for
这是一个指令,只要有v-的就是指令(directive 操作dom )
在vue中可以通过v-for来循环数据的通知循环dom,语法是item in/of items,接收第二个参数是索引 (item,index) of items,
还可以遍历对象,第一个参数是value,第二个是key,第三个依然是索引
<div id="app">
<ul>
<li v-for="(item,index) in arr"> {{index+1}} 、 {{item}}</li>
</ul>
<ul>
<li v-for="(value,key,index) in user">{{index}}/{{key}}:{{value}}</li>
</ul>
</div>
new Vue({
el:"#app",
data:{
arr:["苹果","梨子","香蕉"],
user:{
name:"张三"
}
}
})
(2) key
*跟踪每个节点的身份,从而重用和重新排序现有元素
*理想的 key 值是每项都有的且唯一的 id。data.id
(3) 数组更新检测
a. 使用以下方法操作数组,可以检测变动
push() pop() shift() unshift() splice() sort() reverse()
b. filter(), concat() 和 slice() ,map(),新数组替换旧数组
c. 不能检测以下变动的数组
由于 JavaScript 的限制,Vue 不能检测以下数组的变动:
1.当你利用索引直接设置一个数组项时,例如:vm.items[indexOfItem] = newValue
1-1.Vue.set(vm.items, indexOfItem, newValue)
Vue.set(vm.arr, 2, 30) //如果在实例中可以通过 this.$set(vm.arr, 2, 30)
1-2 vm.items.splice(indexOfItem, 1, newValue)
2.当你修改数组的长度时,例如:vm.items.length = newLength
vm.items.splice(newLength)