vue 使用elemui 树形 表格 按钮 展开收缩
- 首先,在模板中使用
<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>
- 在
<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);
},
},
};
- 在
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>
原文地址: https://www.cveoy.top/t/topic/by5H 著作权归作者所有。请勿转载和采集!