1. 首先,在模板中使用<el-table><el-table-column>来渲染表格,其中<el-table-column>中的type属性需要设置为tree表示该列为树形结构。
<template>
  <div>
    <el-table :data="data" :row-key="row => row.id">
      <el-table-column type="tree" :indent-size="20" label="名称" prop="name">
        <template slot-scope="{ row }">
          {{ row.name }}
        </template>
      </el-table-column>
      <el-table-column label="操作">
        <template slot-scope="{ row }">
          <el-button type="primary" @click="toggle(row)">
            {{ row.expanded ? '收起' : '展开' }}
          </el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>
  1. <el-button>中绑定toggle方法,该方法用于切换节点的展开状态。
export default {
  data() {
    return {
      data: [
        {
          id: 1,
          name: '节点1',
          children: [
            {
              id: 2,
              name: '节点1-1',
              children: [
                {
                  id: 3,
                  name: '节点1-1-1',
                },
                {
                  id: 4,
                  name: '节点1-1-2',
                },
              ],
            },
            {
              id: 5,
              name: '节点1-2',
              children: [
                {
                  id: 6,
                  name: '节点1-2-1',
                },
                {
                  id: 7,
                  name: '节点1-2-2',
                },
              ],
            },
          ],
        },
      ],
    };
  },
  methods: {
    toggle(row) {
      this.$refs.tree.toggleRowExpansion(row);
    },
  },
};
  1. toggle方法中使用this.$refs.tree来获取<el-table>的引用,并调用toggleRowExpansion方法切换节点的展开状态。
<el-table ref="tree" :data="data" :row-key="row => row.id">
  ...
</el-table>

完整代码如下:

<template>
  <div>
    <el-table ref="tree" :data="data" :row-key="row => row.id">
      <el-table-column type="tree" :indent-size="20" label="名称" prop="name">
        <template slot-scope="{ row }">
          {{ row.name }}
        </template>
      </el-table-column>
      <el-table-column label="操作">
        <template slot-scope="{ row }">
          <el-button type="primary" @click="toggle(row)">
            {{ row.expanded ? '收起' : '展开' }}
          </el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      data: [
        {
          id: 1,
          name: '节点1',
          children: [
            {
              id: 2,
              name: '节点1-1',
              children: [
                {
                  id: 3,
                  name: '节点1-1-1',
                },
                {
                  id: 4,
                  name: '节点1-1-2',
                },
              ],
            },
            {
              id: 5,
              name: '节点1-2',
              children: [
                {
                  id: 6,
                  name: '节点1-2-1',
                },
                {
                  id: 7,
                  name: '节点1-2-2',
                },
              ],
            },
          ],
        },
      ],
    };
  },
  methods: {
    toggle(row) {
      this.$refs.tree.toggleRowExpansion(row);
    },
  },
};
</script>
vue 使用elemui 树形 表格 按钮 展开收缩

原文地址: https://www.cveoy.top/t/topic/by5H 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录