vue监听对象属性变化的两种情况:
- 对象属性固定:
data() {
return {
obj: {
a: '1111',
b: '222'
}
}
},
watch: {
obj: {
deep: true,
handler: function(newVal, oldVal) {
console.loe(newVal, '===newVal===')
}
}
}
- 对象属性动态----------采用this.$set改变属性值:
data() {
return {
obj: {}, // 定义一个空对象
keys: ['a', 'b']
}
},
watch: {
obj: {
deep: true,
handler: function(newVal, oldVal) {
console.loe(newVal, '===newVal===')
}
}
},
mounted() {
this.keys.map((key, i)=> {
this.$set(this.obj, key, i ) // 此处采用直接赋值的情况监听不到值变化,因此采用this.$set改变属性值
})
}