const self = this
self.$nextTick(() => {
const arr = []
// row.menus回显数据
row.menus.forEach(f => {
if (!self.$refs.tree1.getNode(f).childNodes || !self.$refs.tree1.getNode(f).childNodes.length) {
arr.push(f)
}
})
self.$refs.tree1.setCheckedKeys(arr)
})
-
只选中叶子节点:代码在回显数据时,特意检查了每个节点,只将没有子节点(即叶子节点)的
key
加入到arr
数组中。 -
避免父节点错误全选:由于只在
arr
中加入了叶子节点的key
,而不是所有节点的key
,所以当setCheckedKeys(arr)
被调用时,el-tree
组件会自动根据选中的叶子节点状态来调整父节点的选中状态:- 如果一个父节点的所有子节点都被选中,
el-tree
会自动将父节点设为全选。 - 如果父节点的部分子节点被选中,
el-tree
会自动将父节点设为半选状态。 - 如果没有子节点被选中,父节点则不被选中。
- 如果一个父节点的所有子节点都被选中,