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