如下代码,给person 对象新增age 属性
已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的。
data(){
return{
person:{
name:'',
sex:'',
}
}
}
直接给person赋值操作,虽然可以新增属性,但是不会触发视图更新
mounted(){
this.person.age=24
}
原因是:受ES5的限制,vue.js 不能检测到对象属性的添加或删除。因为vue.js在初始化实例时将属性转为getter/setter,所以属性必须在data对象上才能让vue.js转换,才能让它是响应的。
正确写法:this.$set(this.person,‘key’,‘value’)
mounted(){
this.$set(this.person,'age',24)
}