easyui的tree获取父节点_在elementUI中el-tree获取字节点id以及父节点id(包括非全选中的情况)...

在elementUI中el-tree获取字节点id以及父节点id(包括非全选中的情况)

dom结构如下:

<el-form-item label="权限" prop="menuIds">
  <div class="role_permit">
    <el-tree
      ref="tree"
      :data="permitData"
      show-checkbox
      node-key="id"
      @check="checkPermit"
      default-expanded-all
      :default-checked-keys="ruleForm.menuIds"
      :props="defaultProps"
      v-model="ruleForm.menuIds"
    ></el-tree>
  </div>
</el-form-item>

permitData数据结构

68b173599c02a93bf3960543c83027aa.png
[
    {
        "id":1,
        "menuName":"首页",
        "parentId":0,
        "menuType":1,
        "checked":false,
        "menuCode":null,
        "button":[

        ],
        "childMenus":[

        ]
    },
    {
        "id":2,
        "menuName":"区域经理/业务员",
        "parentId":0,
        "menuType":1,
        "checked":false,
        "menuCode":null,
        "button":[

        ],
        "childMenus":[
            {
                "id":14,
                "menuName":"区域经理/业务员",
                "parentId":2,
                "menuType":2,
                "checked":false,
                "menuCode":null,
                "button":[

                ],
                "childMenus":[

                ]
            },
            {
                "id":15,
                "menuName":"团队设置",
                "parentId":2,
                "menuType":2,
                "checked":false,
                "menuCode":null,
                "button":[

                ],
                "childMenus":[

                ]
            }
        ]
    }
   ...............此处省略一万字
]

js方法

getKeys(){
   var menuIds =this.getCheckedKeys(this.permitData,this.$refs.tree.getCheckedKeys(),'id')
},
getCheckedKeys(data,keys,key){
  var res = [];
  recursion(data,false);
  return res;
  function recursion(arr,isChild){
    var aCheck = [];
    for(var i = 0; i< arr.length; i++){
      var obj = arr[i];
      aCheck[i] = false;
      if(obj.childMenus){
        aCheck[i] = recursion(obj.childMenus,true) ? true : aCheck[i];
        if(aCheck[i]){
          res.push(obj[key]);
        }
      }
      for(var j =0;j<keys.length;j++){
        if(obj[key] == keys[j]){
          aCheck[i] =true;
          if(res.indexOf(obj[key])==-1){
            res.push(obj[key]);
          }
          break;
        }
      }
    }
    if(isChild){
      return aCheck.indexOf(true) != -1;
    }
  }
},

通过调用 getKeys()方法可以获取到字节点id以及父节点id

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值