由于 JavaScript 的限制,Vue 无法检测到以下数组变动:
- 当你使用索引直接设置一项时,例如
vm.items[indexOfItem] = newValue
- 当你修改数组长度时,例如
vm.items.length = newLength
-
为了解决第 1 个问题,以下两种方式都可以实现与
vm.items[indexOfItem] = newValue
相同的效果,但是却可以通过响应式系统出发状态更新:// Vue.setVue.set(example1.items, indexOfItem, newValue)// Array.prototype.spliceexample1.items.splice(indexOfItem, 1, newValue)为了解决第 2 个问题,你可以使用
splice
:example1.items.splice(newLength)