已经赋值过的对象、数组时,向对象中添加新的属性,如果更新此属性的值,页面不会更新视图。是因为我们用错更新方法

 由于 JavaScript 的限制,Vue 不能检测数组和对象的变化。尽管如此我们还是有一些办法来回避这些限制并保证它们的响应性。

对于对象/数组

Vue 无法检测 property 的添加或移除。由于 Vue 会在初始化实例时对 property 执行 getter/setter 转化,所以 property 必须在 data 对象上存在才能让 Vue 将它转换为响应式的。例如

// `vm.a` 是响应式的

var vm = new Vue({

data:{ a:1 }

})

// `vm.b` 是非响应式的

vm.b = 2

我们需要使用 Vue.set(object, propertyName, value) 方法向嵌套对象添加响应式 property。例如,对于:Vue.set(vm.someObject, 'b', 2)

您还可以使用 vm.$set 实例方法,这也是全局 Vue.set 方法的别名:

this.$set(this.someObject,'b',2)
Logo

前往低代码交流专区

更多推荐