element UI树形控件子节点部分选中 也需要获取父级的方法

2,024 阅读1分钟

问题

写菜单权限功能时(菜单以树状图展示)发现,门店管理下面的子节点不全选,然后保存提交权限后,就会发现左侧菜单栏里的【门店】不见了。

解决办法

检查发现是提交时getCheckedKeys得到的数组只有选中的节点,门店属于半选中的节点没有提交,导致了这个问题,解决办法是使用getCheckedKeys和getHalfCheckedKeys两个方法结合获得数组

let checkedKeys = this.$refs.tree.getCheckedKeys();
let hafCheckedKeys = this.$refs.tree.getHalfCheckedKeys();
let nodeList = checkedKeys.concat(hafCheckedKeys);

注意事项

再次获取选中数组展示时,因为数组中包含了父节点选中(半选中)会出现问题。
例,menusTree中包含了父节点门店,子节点自定义门店也会显示选中,但实际上没有选中。
所以再次获取选中数组展示时要把半选中的父节点从数组中剔除掉,不能赋值给menusTree。