当vue修改data某个对象中深层的数组结构时,html视图不会更新

 这是data中的数据结构,需要修改的是对象中的labelList数组中的对象里面的projectList数组里面对象isCheck变量,isCheck是我作为判断用户是否点击的一个布尔值变量

handleCheckdsfq(ind,ind1){   

this.popupList.labelList[ind].projectList[ind1].isCheck=!this.popupList.labelList[ind].projectList[ind1].isCheck
}

这是我最初始的写法,当用户点击按钮时,isCheck布尔值取反

<radio class='green' :class="item1.isCheck?'checked':''" :checked="item1.isCheck"></radio>

 这是HTML,radio标签利用isCheck来判断用户是否选中

但在当我测试功能时,却发现数据在变化,视图缺不会跟着变化,只能勾选不能取消(双向绑定丢失了),如下动图

 

 后面百度查找了,才发现这是vue的一个bug,官方有给出解决办法,但是过于麻烦,所以我这边用了深拷贝

handleCheckdsfq(ind,ind1){
				let temp = Object.assign(this.popupList, [])
				temp.labelList[ind].projectList[ind1].isCheck = !temp.labelList[ind].projectList[ind1].isCheck
				this.popupList = []
				this.popupList = temp
}

将第一个对象浅拷贝到一个新定义的临时变量里面,再修改临时变量里面的值,最后再重新赋值给原来的变量,最后仅用几行代码成功解决该问题

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值