element-ui的树形表格el-table懒加载lazy子节点修改数据后局部刷新
在Element UI的树形表格中,如果你想要在修改了某个节点的数据后仅仅刷新这个节点,而不是整个表格,你可以通过更新组件的:data
属性中对应节点的数据来实现局部刷新。
以下是一个简单的例子,展示了如何在修改了节点数据后仅刷新该节点:
<template>
<el-table
:data="tableData"
:row-key="getRowKey"
lazy
:load="loadNode"
: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>
</template>
<script>
export default {
data() {
return {
tableData: [],
// 假设的节点数据,实际情况中你会从服务器获取
nodes: {
'node1': {
date: '2016-05-02',
name: '张三',
address: '上海市普陀区金沙江路 1518 弄'
},
// 其他节点数据...
}
};
},
methods: {
getRowKey(row) {
return row.id;
},
loadNode(row, treeNode, resolve) {
// 模拟从服务器加载数据
setTimeout(() => {
resolve(this.getChildren(row));
}, 1000);
},
getChildren(row) {
// 假设你已经修改了某个节点的数据
const updatedNode = {
...this.nodes[row.id],
// 修改后的数据
name: '李四'
};
// 更新节点数据
this.$set(this.nodes, row.id, updatedNode);
// 返回修改后的节点作为子节点
return [updatedNode];
}
}
};
</script>
在这个例子中,我们使用了Vue的$set
方法来确保Vue能够检测到数据的变化并更新对应的节点。这样,当你修改了节点的数据后,通过getChildren
方法返回的节点会被用作替换原来的节点,从而实现局部刷新。
评论已关闭