zoukankan      html  css  js  c++  java
  • element-ui中el-tree组件节点全展开与全收缩功能实现

    目录

    1. 功能描述
    2. 代码实现
    3. 最终效果

    一、功能描述

    • 实现: element-ui中el-tree组件全部节点的展开与收缩功能。
    • 版本: "element-ui": "^2.3.7"。

    二、代码实现

    <template>
      <div class="tree-container">
        <el-button type="primary" @click="onExpand">{{this.expandAll?'收缩':'展开'}}所有节点</el-button>
        <el-tree :data="data" ref="tree"></el-tree>
      </div>
    </template>
    
    <script>
      export default {
        data() {
          return {  
            expandAll: false,
            data: [{
              label: '一级 1',
              children: [{
                label: '二级 1-1',
                children: [{
                  label: '三级 1-1-1'
                }]
              }]
            }, {
              label: '一级 2',
              children: [{
                label: '二级 2-1',
                children: [{
                  label: '三级 2-1-1'
                }]
              }, {
                label: '二级 2-2',
                children: [{
                  label: '三级 2-2-1'
                }]
              }]
            }]
          };
        },
        methods: {
          // 节点展开
          async onExpand () {
            try {
              await this.$confirm('确认要展开所有节点?', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
              })
              this.expandAll = !this.expandAll
              // 改变每个节点的状态
              this.changeTreeNodeStatus(this.$refs.tree.store.root)
            } catch (e) {
              this.$message({
                type: 'info',
                message: e === 'cancel' ? '取消操作' : '操作失败'
              })
            }
          },
          // 改变节点的状态
          changeTreeNodeStatus (node) {
            node.expanded = this.expandAll
            for (let i = 0; i < node.childNodes.length; i++) {
              // 改变节点的自身expanded状态
              node.childNodes[i].expanded = this.expandAll
              // 遍历子节点
              if (node.childNodes[i].childNodes.length > 0) {
                this.changeTreeNodeStatus(node.childNodes[i])
              }
            }
          }
        }
      };
    </script>
    

    三、最终效果

    demo地址

  • 相关阅读:
    团队第二阶段冲刺——第三天
    团队第二阶段冲刺——第二天
    团队第二阶段冲刺——第一天
    第一阶段意见汇总
    团队第一次绩效考核
    我们与同类产品的差距
    团队项目第一阶段成果评价
    第一阶段验收成果总结
    团队冲刺第十天
    团队冲刺第九天
  • 原文地址:https://www.cnblogs.com/snaillu/p/14121159.html
Copyright © 2011-2022 走看看