Element UI 树组件 复选框 父子关联

3 篇文章 0 订阅
<el-tree
      style=" width: 100%;"
      :props="propss"
      :highlight-current="true" 
      ref="tree_ext"
      @node-click="handleNodeClick"
      @node-expand="handleNodeExpand"
      @node-collapse="handleNodeCollapse"
      :expand-on-click-node="false"
      @check="handleCheckboxClick"
      node-key="node_id"
      :show-checkbox="ib_isCheckBox" 
      :check-strictly="ib_checkStrictly"
      :data="ia_treeData"
    >
    </el-tree>

handleCheckboxClick(data,node) {//系统权限树操作(多个树同时存在可用名称区别)
  this.handleCheck(data, node);
},
handleCheck(data, node) {
  console.log("Node",data, node);
  const isChecked = this.$refs.tree_ext.getNode(data).checked;
  // 如果当前节点被选中,则遍历下级子节点并选中,如果当前节点取消选中,则遍历下级节点并取消选中
  if(isChecked){
    //判断是否有上级节点,如果有那么遍历设置上级节点选中
    if(data.node_pid){
      this.setParentChecked(data,true)
    }
    // 判断该节点是否有下级节点,如果有那么遍历设置下级节点为选中
    data.node_child && data.node_child.length>0 && this.setChildreChecked(data.node_child,true)
  }else{
    // 如果节点取消选中,则取消该节点下的子节点选中
    data.node_child && data.node_child.length>0 && this.setChildreChecked(data.node_child,false)
  }
},
setChildreChecked(node,isChecked){
  node.forEach(item => {
    item.node_child && item.node_child.length>0 && this.setChildreChecked(item.node_child,isChecked)
    this.$refs.tree_ext.setChecked(item.node_id,isChecked);
  })
},
setParentChecked(node,isChecked){
  // node_child:(...)
  // node_data:(...)
  // node_id:(...)
  // node_pid:(...)
  // node_text:(...)
  console.log("setParentChecked",node,isChecked);
  if(node.node_pid === 'ROOT_'){
    //设置节点选中
    this.$refs.tree_ext.setChecked(node.node_id,isChecked);
  }else{
    this.$refs.tree_ext.setChecked(node.node_id,isChecked);
    //设置父节点
    let parentNode = this.$refs.tree_ext.getNode(node.node_pid);
    console.log(parentNode);
    this.setParentChecked(parentNode.data,isChecked);
  }
},
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想看海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值