el-tree懒加载如何加载数据
时间: 2023-10-20 19:35:03 浏览: 101
el-tree 的懒加载可以通过设置 `lazy` 属性为 `true` 来实现。懒加载是指在展开树节点时,才去异步加载子节点的数据,而不是一次性加载所有节点的数据。
要实现懒加载,需要在每个树节点的数据对象中添加一个 `loading` 字段来表示当前节点是否正在加载子节点数据。同时,还需要为树节点添加一个 `load` 方法,用于异步加载子节点数据。
下面是一个示例:
```html
<template>
<el-tree :data="treeData" :lazy="true" :load="loadData"></el-tree>
</template>
<script>
export default {
data() {
return {
treeData: [
{
label: '节点1',
loading: false,
children: [],
},
{
label: '节点2',
loading: false,
children: [],
},
],
};
},
methods: {
loadData(node, resolve) {
if (node.level === 0) {
// 根节点,直接返回
return resolve([
{ label: '子节点1', loading: false, children: [] },
{ label: '子节点2', loading: false, children: [] },
]);
}
// 非根节点,模拟异步加载数据
node.loading = true;
setTimeout(() => {
node.loading = false;
const children = [
{ label: '子节点1', loading: false, children: [] },
{ label: '子节点2', loading: false, children: [] },
];
resolve(children);
}, 1000);
},
},
};
</script>
```
在上面的示例中,`treeData` 是树的数据源,每个节点对象都包含 `label` 字段表示节点显示的文本,`loading` 字段表示节点是否正在加载子节点数据,以及 `children` 字段表示子节点。
`loadData` 方法是用于异步加载子节点数据的方法。当树节点展开时,会调用该方法来加载子节点数据。在这个方法中,可以根据需要进行异步请求,获取子节点数据,然后通过 `resolve` 方法将数据传递给树组件进行展示。可以根据 `node.level` 来判断当前节点的层级,以便决定是否加载根节点或是子节点的数据。
需要注意的是,在异步加载数据时,需要将节点的 `loading` 字段置为 `true` ,表示正在加载中,加载完成后再将其置为 `false` 。这样,在展示节点时,会根据 `loading` 字段来显示加载状态。
希望以上示例能够帮助到你实现 el-tree 的懒加载功能!
阅读全文