看下面代码,el-tree中回显问题,隐藏的弹窗中已经有全部的权限,现在在点击编辑权限,弹窗展示,默认勾选出已经选中的权限
let selectId = res.data.data.checkList; 权限id当前拥有 [1,2,3]
this.$nextTick(() => {
selectId.forEach((item) => {
const node = this.$refs["menuListTree"].getNode(item); 根据id获取对应node节点
if (node?.isLeaf) { isLeaf 这个属性意思是如果是叶子节点就是true,然后可以根据这个设置回显,那么他父节点会自动半选或者全选根据叶子节点
this.$refs["menuListTree"].setChecked(node, true);
}
});
});
这个代码我感觉逻辑是没有问题的,返回全部权限id,然后根据getNode(id)获取对应的node节点,然后node节点上有一个属性isLeaf, true的话这个节点就是叶子节点,那么就设置这个节点setChecked
选中,然后父节点会根据叶子节点的情况自动半选或者全选,
但是效果就不尽人意,
我在思考是不是这时候dom还没渲染完成呢,但是我加了nextTick呀,所以我前面有加了一个定时器,然后奇迹就出现了
let selectId = res.data.data.checkList; //权限id当前拥有 [1,2,3]
setTimeout(() => {
this.$nextTick(() => {
selectId.forEach((item) => {
const node = this.$refs["menuListTree"].getNode(item); //根据id获取对应node节点
if (node?.isLeaf) { //isLeaf 这个属性意思是如果是叶子节点就是true,然后可以根据这个设置回显,那么他父节点会默认半选或者全选根据叶子节点
this.$refs["menuListTree"].setChecked(node, true);
}
});
});
}, 100);
看到能获取到node节点,并且能选中了
所以想问下大家,这里到底怎么写好,这个原因是什么?
相关文章
暂无评论...