4 回答
TA贡献1827条经验 获得超9个赞
因为 Vue 无法探测普通的新增属性
问题在于下面这句:
this.cashData.forEach((item)=>{
item.showProInfoFlag = true;
})
因为 你在data里声明了cashData的值 所以cashData已经是响应式的 this.cashData = data 这句话 vue会递归将数据包装成响应式数据
但是你这个数据之前data应该没有这个showProInfoFlag值 所以这里没有监听到,通过item.showProInfoFlag只是单纯的对象赋值
总结成下面:
this.cashData = 1
//这个可以监听到 因为cashData已经是响应式
this.cashData = {}
this.cashData.showProInfoFlag = 1;
//不可以监听到 因为vue不知道你有showProInfoFlag 这个属性
this.cashData = {showProInfoFlag:''}
this.cashData.showProInfoFlag = 2;
//可以监听到 因为vue知道你有showProInfoFlag 这个属性
你一调换一下位置:
data.forEach((item)=>{
item.showProInfoFlag = true;
})
this.cashData = data;
或者:
this.cashData.forEach((item)=>{
this.$set(item,'showProInfoFlag',true)
})
添加回答
举报