文章82
标签28
分类8

Vue 检测数组变化

原因

在Array.prototype上挂载的方法并不能触发该属性的 setter,所以 observe并不能监听到数组的变化。

// 当你使用索引直接设置一项时,例如 
vm.items[indexOfItem] = newValue

// 当你修改数组长度时,例如 
vm.items.length = newLength

解决方式

  • 当你使用索引直接设置一项时
// Vue.set
Vue.set(vm.items, indexOfItem, newValue)
// vm.$set,Vue.set的一个别名
vm.$set(vm.items, indexOfItem, newValue)
// Array.prototype.splice
vm.items.splice(indexOfItem, 1, newValue)
  • 当你修改数组长度时
// Array.prototype.splice
vm.items.splice(newLength)