elementui表格树形结构由第二列展开

第一列的 el-table-column标签中添加type="",就可以将展开列添加到第二列

  • 20
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我可以为您解答。实现表格加载树形数据,需要以下步骤: 1. 在表格中添加树形数据列,例如: ``` <el-table-column prop="name" label="名称"> <template slot-scope="scope"> <span :style="{marginLeft: scope.row.level * 20 + 'px'}">{{scope.row.name}}</span> </template> </el-table-column> ``` 其中,prop属性表示数据对应的字段,label属性表示列的名称,slot-scope属性表示插槽作用域,可以使用scope来获取当前行的数据。在模板中,根据当前数据的层级(level)来动态设置名称的缩进。 2. 在数据源中添加level字段,表示当前数据的层级,例如: ``` data: [ { name: '节点1', level: 0, children: [ { name: '节点1-1', level: 1 }, { name: '节点1-2', level: 1 } ] }, { name: '节点2', level: 0, children: [ { name: '节点2-1', level: 1, children: [ { name: '节点2-1-1', level: 2 } ] } ] } ] ``` 其中,children属性表示当前节点的子节点,如果没有子节点,可以不添加该属性。 3. 在表格中添加expand属性,表示是否展开当前行的子节点,例如: ``` <el-table :data="data" :expand-row-keys="expandKeys" @expand-change="handleExpandChange"> <el-table-column type="expand"> <template slot-scope="props"> <el-table :data="props.row.children"> <el-table-column prop="name" label="名称"> <template slot-scope="scope"> <span :style="{marginLeft: (scope.row.level + 1) * 20 + 'px'}">{{scope.row.name}}</span> </template> </el-table-column> </el-table> </template> </el-table-column> <el-table-column prop="name" label="名称"> <template slot-scope="scope"> <span :style="{marginLeft: scope.row.level * 20 + 'px'}">{{scope.row.name}}</span> </template> </el-table-column> </el-table> ``` 其中,type属性为expand表示当前列为展开列,通过props.row.children获取当前行的子节点数据,然后再次渲染表格。在子表格中,名称的缩进需要根据父节点的层级来计算。 4. 在组件中添加处理展开事件的方法,例如: ``` export default { data() { return { data: [...], expandKeys: [] } }, methods: { handleExpandChange(row, expandedRows) { if (expandedRows) { this.expandKeys.push(row.name) } else { const index = this.expandKeys.indexOf(row.name) if (index >= 0) { this.expandKeys.splice(index, 1) } } } } } ``` 其中,expandKeys数组记录当前已展开的行的名称,handleExpandChange方法用于处理展开事件,通过判断expandedRows参数来确定当前行是否展开,然后根据名称来添加或删除expandKeys数组中的元素。 以上就是模拟ElementUI实现表格加载树形数据的步骤,希望对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值