vue Set给嵌套对象添加属性到底哪种形式是对的


// 这是data数据结构
data:
allTableConfig: {
parameters: {
pie_filter:{}
},
},
// 子组件传过来一个对象 要传给表格组件监听
// 为什么只有最后一种被watch allTableConfig监听到了,其他的只有首次点击被监听
// 可是我希望是中间的 因为最后是覆盖 我还要给parameters传其他参数
pieSendval(val) {
this.allTableConfig.parameters.pie_filter = val
// 这种在写法上有什么错误吗
this.$set(this.allTableConfig.parameters, 'pie_filter', val)
this.$set(this.allTableConfig, 'parameters', { pie_filter: val })
},

回答

想监听深层次的属性变更watch加下deep配置https://cn.vuejs.org/v2/api/#...

// 第二种写法
for (let [key, value] of Object.entires(val)) {
    this.$set(this.allTableConfig.parameters.pie_filter, key, value)
}

新增pie_filter对象的属性

this.$set(this.allTableConfig.parameters, 'pie_filter', val)

这种写法没有把allTableConfig转换为响应式的对象,所以即是你加了deep也监听不到变化。

以上是vue Set给嵌套对象添加属性到底哪种形式是对的的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>