最近遇到一个很奇怪的需求 需求如下
权限列表 默认支持单独选择树的任何一项 不关联父子 a-tree设置checkStrictly为true即可 后来 用户操作的时候需要改为父子级联 并且之前的选中是不可以乱的 就是checkStrictly变为false
个人解决方法如下
tree属性重点如下
:checkStrictly="checkStrictly"
@check="onCheck"
onCheck方法如下 写法为vue3写法 大同小异 halfCheckedKeys为半关联(就是子集没打钩满 通过这个第二个参数可以得到)的存储
function onCheck(o, e) {
if (e) {
halfCheckedKeys.value = e.halfCheckedKeys || [];
}
checkedKeys.value = o.checked ? o.checked : o;
}
关键来了 当我们切换后数据是不对的 例如独自选项 我们选了1-1 转成父子关联 1-1-1 1-1-2都打勾了 可是你获取getCheckedKeys()方法是只会拿到1-1这个数据 解决方法如下
//开启关联 模拟点击一次
try {
nextTick(() => {
let dom = document.getElementsByClassName('ant-tree-checkbox');
dom[0].click();
setTimeout(() => {
dom[0].click();
}, 0);
});
} catch (e) {}
模拟点击 触发oncheck事件 当你触发了oncheck事件 所打勾的都会传到o,e两个参数里面 自然就解决了~~~~我是小伟如果解决你的问题麻烦点个赞呀