element-ui的树形图父节点选中子节点未选中(对懒加载之后的数据做处理)

需求是:某一个父节点下的所有子节点都选中,父节点不一定选中,但是父节点选中的,子节点都要选中。
开始采用了父子组件不关联的做法,因为实现过程中有问题,具体看上一篇文章
element-ui的树状图default-checked-keys默认却勾选了所有的子节点
但是这种实现方式会造成父节点选中的情况子节点未选中,解决方式如下:
1、这个是上一篇文章,评论里给的答复,没有尝试,但是按理应该可以在这里插入图片描述
2、自己写的比较麻烦的方式
在loadNode的懒加载子节点的方法里,
第一步

let checkedKeys = []
// 先保存当前选中的节点key, 展开后再设置一遍解决展开某选中节点后选中被取消的问题
if(this.$refs.tree!=undefined) checkedKeys = this.$refs.tree.getCheckedKeys();
   ···// 进行懒加载接口的请求
	// 请求成功之后,判断父节点如果是选中的,就把所有的子节点都放进选中节点的数组checkedKeys
if (node.checked) {
  for (const i of res.data.permissions) {
    checkedKeys.push(i.id)
  }
}
···// 将数据resolve出去
// 最后对节点再赋值,此时子节点是全部都选中的
if(this.$refs.tree!=undefined & node.checked) this.$refs.tree.setCheckedKeys(checkedKeys);

参考文章

Vue\Element UI树组件懒加载,并解决展开选中节点的子节点不选中问题

你可能感兴趣的:(vue,element-ui,vue,element-ui,js)