ElementUI el-table树形表格懒加载手动刷新 解决Element Table组件树形展示懒加载数据更新的问题
在Element UI的el-table
组件中实现树形结构的数据以及懒加载的功能,并需要支持手动刷新。以下是一个简化的示例代码:
<template>
<el-table
:data="tableData"
style="width: 100%;"
row-key="id"
lazy
:load="loadChildren"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
>
<el-table-column
prop="date"
label="日期"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="姓名"
width="180">
</el-table-column>
<el-table-column
prop="address"
label="地址">
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button @click="refresh(scope.row)">手动刷新</el-button>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [],
};
},
methods: {
loadChildren(tree, treeNode, resolve) {
setTimeout(() => {
// 模拟从服务器获取数据
let children = [
{ id: '1', date: '2016-05-02', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄', hasChildren: true },
// ...更多子节点
];
// 调用resolve传入子节点数据
resolve(children);
}, 1000);
},
refresh(row) {
// 通过row.storeInstance.load方法手动刷新节点
row.storeInstance.load(row, this.loadChildren);
},
},
mounted() {
this.loadChildren(null, null, data => {
this.tableData = data;
});
},
};
</script>
在这个示例中,el-table
组件被设置为lazy
,并提供了一个loadChildren
方法来加载子节点。refresh
方法允许你通过行数据(row
)的storeInstance
属性来手动刷新该节点的子节点。这个例子假设你有一个模拟的数据加载过程,通过setTimeout
模拟异步加载,并在加载完成后调用resolve
函数。
评论已关闭