vue 无法探测普通的新增对象属性
问题描述
- 在vue中,假设
a={name:"aa",age:"20"}
、b={name:"bb"}
如果使用this.a={...b}
(此时this.a中没有age),此时再使用this.a.age="33"
是失败的,因为vue无法直接探测普通的新增对象属性,age并不是响应式的property了 - 关于vue无法直接探测普通的新增对象属性:
- myObject为响应式对象,但使用
this.myObject.newProperty = 'hi
添加的newProperty是非双向绑定的,因为vue无法直接探测普通的新增对象属性,需要借助set实现双向绑定this.$set(this.myObject, "newProperty", "hi")
- myObject为响应式对象,但使用
解决方法
- 可以使用
this.$set(this.a, "age", "33")
向响应式对象中添加一个 propertyage
,并确保这个新 propertyage
同样是响应式的- vue 无法探测普通的新增 property (比如
this.myObject.newProperty = 'hi
/this.a.age="33"
),所以必须使用$set
- vue 无法探测普通的新增 property (比如
- 也可以在一开始深拷贝赋值时使用
this.a={...this.a, ...b}
例子
1 | data() { |