vue列表循环非响应式情况
- 数组的length无法响应
- 处理手段: 使用 arr = null arr.splice( 0 )
- 当你利用索引直接设置一个数组项时,例如:vm.items[indexOfItem] = newValue
- 处理手段: Vue.set / this.$set
<!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>
</head>
<body>
<div id="app">
<button @click = "modifyFirst"> 修改第一项 </button>
<button @click = "remove"> 清空 </button>
<ul>
<li v-for = "item in todos" :key = "item.id">
<p> {{ item.task }} </p>
</li>
</ul>
<button @click = "modifyFirst"> 修改第一项 </button>
<ul>
<li v-for = "item in items">
{{ item }}
</li>
</ul>
</div>
</body>
<script src="../../lib/vue.js"></script>
<script>
/*
业务:
1. 将todos中的第一项的task改为 睡觉
2. 我要将清空列表
*/
new Vue({
el: '#app',
data: {
todos: [
{
id: 1,
task: '任务一'
},
{
id: 2,
task: '任务二'
}
],
items: ['a','b','c']
},
methods: {
modifyFirst () {
// this.items[ 0 ] = '睡觉'
Vue.set( this.items,'0','睡觉')
// this.$set
// Vue.set底层就是 Object.assign
},
remove () {
// this.todos = null 可以
// this.todos.length = 0
this.todos.splice( 0 )
}
}
})
</script>
</html>