受 ES5 的限制,Vue.js 不能检测到对象属性的添加或删除。因为 Vue.js 在初始化实例时将属性转为 getter/setter,所以属性必须在 data 对象上才能让 Vue.js 转换它,才能让它是响应的。
因此,当我们想要在data中或者data中的对象添加新的属性时,我们需要使用vue.set(),否则是无法触发视图更新的。
data () {
return {
test: {
age: 24,
sex: 'man'
}
}
},
methods: {
addNewAttribute() {
this.test.aaa = 'newAttribute'
},
changeAttribute() {
this.test.age = 20
}
}
直接使用对象添加属性方法是不行的
只能够更改已有属性
所以要使用vue.set()方法
this.$set(this.test, ‘aaa’ , ‘newAttribution’)
ok!