业务场景下有这样的问题
业务需求需要保存前端
半选节点
解决方案
let checked = this.$refs.menuTree.getCheckedKeys();
//此方法获取半选节点
let halfChecked = this.$refs.menuTree.getHalfCheckedKeys();
//我们合并两个数组,便获取到了我们选中的节点及半选节点
let cArr=checked.concat(halfChecked);
之后业务数据包含半选的节点,在前端回显时会全选他的子节点,???!!非我们预期
其中一种解决方法,去除业务数据中的父节点信息
let resData=[]//获取后端数据(包含半选节点,数据结构为 数组...[{id:XX,pid:XXX},...])
let checked = [];//需要选中的节点
let pidArr=[];//获取父节点
for (let item of resData) {
pidArr.push(item.pid);
}
for (let item of resData) {
let id=item.id;
let isP=pidArr.includes(id);
if(!isP){
checked.push(id);
}
}
this.$nextTick(function () {
that.$refs.menuTree.setCheckedKeys([]);
that.$refs.menuTree.setCheckedKeys(checked);
});