共计 930 个字符,预计需要花费 3 分钟才能阅读完成。
看上面代码,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 节点,并且能选中了
所以想问下大家,这里到底怎么写好,这个起因是什么?
正文完