【elementUI中el-table树形与el-tree树形结构的一键折叠与展开】

一、业务需求

vue项目,菜单管理中菜单table的树形结构,一般情况下如果使用的是elementUI那么可以使用里面el-table的树形结构,实际场景需要一键折叠/展开功能。当选择上级目录时需要通过el-tree树形获取目录的树形结构,此时也需要一键折叠/展开功能。

二、解决方案

el-table树形结构的一键折叠/展开功能其实就是与el-table中的 toggleRowSelection 方法密切相关,但是它只是改变某一个节点的,要改变所有节点的话那么就需要这样处理:

三、完成效果

1)展开
在这里插入图片描述
2)折叠
在这里插入图片描述

  <el-form-item label="菜单权限">
        <el-checkbox v-model="menuExpand" @change="handleCheckedTreeExpand($event, 'menu')">展开/折叠</el-checkbox>
        <el-checkbox v-model="menuNodeAll" @change="handleCheckedTreeNodeAll($event, 'menu')">全选/全不选</el-checkbox>
        <el-checkbox v-model="dataForm.menuCheckStrictly" @change="handleCheckedTreeConnect($event, 'menu')">父子联动
        </el-checkbox>
        <el-tree
          class="tree-border"
          :data="menuList"
          show-checkbox
          ref="menuListTree"
          node-key="menuId"
          :check-strictly="!dataForm.menuCheckStrictly"
          empty-text="加载中,请稍后..."
          :props="menuListTreeProps"
        ></el-tree>
  </el-form-item>
 // 树权限(展开/折叠)
    handleCheckedTreeExpand(value, type) {
      let treeList = this.menuList;
      for (let i = 0; i < treeList.length; i++) {
        this.$refs.menuListTree.store.nodesMap[treeList[i].menuId].expanded = value;
        this.$refs.menuListTree.root.expanded = value;
      }
    },

注意:最重要的还是node-key="menuId"

项目源码在此:项目源码

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值