el-table的懒加载树形结构

El-Table树形懒加载中的父子节点关系管理,

el-table树形模式,懒加载的数据保存在multipleTableRef.value.store.states.lazyTreeNodeMap._rawValue

multipleTableRef.value.store.states.lazyTreeNodeMap._rawValue默认值为 {} , 也就是没有属性的对象,每展开一个节点,如展开 id=8的数据行,_rawValue = { “8” : [ 7 , 5 ] } ,_rawValue 会把每一个展开的节点的id作为key,值为子id数组这样的结构保存目前的树形状态

你要查找任意一个id的父id,只需要这样:

const findParentId = (dataId)=>{
   
   
    for (var p in multipleTableRef.value.store
### 如何在 `el-table` 中回显后端返回的树形结构 为了实现后端返回的树形结构数据在 `el-table` 组件中的正确展示,可以按照以下方法操作: #### 数据处理 首先需要对后端返回的数据进行预处理,确保其能够被 `el-table` 正确解析并渲染。通常情况下,树形结构数据可以通过设置 `children` 属性来表示父子关系[^1]。 ```javascript function formatTreeData(data) { return data.map(item => ({ ...item, children: item.children && item.children.length ? formatTreeData(item.children) : null })); } ``` 将上述函数应用于后端返回的数据,从而生成适合 `el-table` 的树形结构数据。 #### 配置表格列 通过配置 `el-table-column` 来定义表头及其对应的字段名。如果需要支持多级表头,则可以在 `columns` 数组中嵌套子项。 ```vue <el-table :data="tableData" style="width: 100%" row-key="id" lazy :load="load"> <el-table-column v-for="(column, index) in columns" :key="index" :label="column.label" :prop="column.prop" align="center"> <!-- 如果有子列 --> <template v-if="column.children"> <el-table-column v-for="(childColumn, childIndex) in column.children" :key="childIndex" :label="childColumn.label" :prop="childColumn.prop"></el-table-column> </template> </el-table-column> </el-table> ``` #### 实现懒加载(可选) 对于大型树形结构数据,推荐启用懒加载以优化性能。这需要配合 `row-key` 和 `lazy` 属性,并提供一个异步加载回调函数 `load`[^3]。 ```javascript methods: { load(tree, treeNode, resolve) { setTimeout(() => { const children = tree.children || []; resolve(children); }, 500); // 模拟延迟请求 } } ``` #### 清空已选项与数据回显 当涉及权限分配或其他场景下的数据回显时,需注意两点:一是初始化页面时应同步后端已有数据;二是切换记录或重新打开弹窗前清除之前的选中状态[^2]。 ```javascript // 初始化勾选状态 this.$nextTick(() => { this.tableData.forEach(row => { if (row.checked === true) { this.$refs.multipleTable.toggleRowSelection(row, true); } }); }); // 切换记录时清空之前的选择 clearSelection() { this.$refs.multipleTable.clearSelection(); } ``` 以上步骤综合起来即可完成基于 Element UI 的 `el-table` 对树形结构数据的支持以及相应的交互逻辑设计。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值