原因
在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)