记录一次自己觉得诡异的地方,可能是我还没摸透原理的原因,在checkbox点击触发的时间里,需要操作一个集合的增删,但全选和单选、反选未能达到预期效果,最终发现是对象引用引起的,深拷贝后解决了该情况。
oneSelect:function(drugs,index,event,detailsList){//单选
if (event.target.checked) {
addDrugs(index,drugs,detailsList)
} else {
//全选样式改变
$(".all:eq("+index+")").removeProp('checked')
//取消选中触发事件,移除药品
reduceDrugs(index,drugs)
}
},
function addDrugs(index,drugs,detailsList){
var dd=JSON.parse(JSON.stringify(recipel_info.recipelInfo[index].chooseDrugs))
dd.push(drugs)
recipel_info.recipelInfo[index].chooseDrugs=dd
if(dd.length===detailsList.length){//全选
$(".all:eq("+index+")").prop('checked',true)
}
console.log('drugs',recipel_info.recipelInfo[index].chooseDrugs)
}
function reduceDrugs(index,drugs){
//取消选中触发事件,移除药品
var dd=JSON.parse(JSON.stringify(recipel_info.recipelInfo[index].chooseDrugs))
for(var i=0;i<dd.length;i++){
if(dd[i].flow===drugs.flow){
dd.splice(i,1)
break
}
}
recipel_info.recipelInfo[index].chooseDrugs=dd
console.log('drugs',recipel_info.recipelInfo[index].chooseDrugs)
}