Tree 树形控件根据code过滤节点(Element+Vue)

28 篇文章 0 订阅
24 篇文章 1 订阅

项目场景:

权限控制中根据登陆账号已有权限code 渲染tree的结构树。从而实现下级权限不能高于本级权限

解决方案:

DOM

   <el-tree
     :data="menuData"
     show-checkbox
     default-expand-all
     node-key="id"
     ref="tree"
     :props="defaultProps"
     @check="onCheck"
   >
   </el-tree>

Data

   menuData:[],
   code:[]

js 递归便利

此方法删除掉一个元素后,数组的索引会发生变化,造成程序异常。

  this.setDisabled(this.menuData, this.code). //使用

   // 通过code对权限结构树进行过滤
  setDisabled (treeData, keys) {
    const loop = (data) => {
       data.forEach((item, index) => {
         if (!keys.includes(item.id)) {
           // item.disabled = true
           data.splice(index, 1)
         }
         if (item.children && item.children.length) {
           loop(item.children)
         }
       }) 
     }
     loop(treeData)
   }

解决方案:

   this.setDisabled(this.menuData, this.code). //使用
 
    // 通过code对权限结构树进行过滤
   setDisabled (treeData, keys) {
     const loop = (data) => {
        let i = data.length
        while (i--) {
          if (!keys.includes(data[i].id)) {
            // item.disabled = true
            data.splice(i, 1)
          }
          if (data[i] && data[i].children && data[i].children.length) {
            loop(data[i].children)
          }
        }
      }
      loop(treeData)
    }

博主原创作品!!!!

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天高任鸟飞dyz

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

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

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

打赏作者

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

抵扣说明:

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

余额充值