由于 JavaScript 的限制,Vue 不能检测数组和对象的变化。尽管如此我们还是有一些办法来回避这些限制并保证它们的响应性。
对于对象$set:
this.$set(object, propertyName, value)
this.$set(this.activeData, 'format', val)
对于数组$set||splice
var vm = new Vue({
data: {
items: ['a', 'b', 'c']
}
})
vm.items[1] = 'x' // 不是响应性的---通过下标改变值
vm.items.length = 2 // 不是响应性的---改变数组长度this.$set(vm.items, indexOfItem, newValue)
this.items.splice(indexOfItem, 1, newValue)
this.items.splice(newLength)