关键参数:lazy,load
<el-tree highlight-current node-key="id" :load="isLoad" lazy :props="defaultProps"></el-tree>
load 方法会在初始加载自动执行一次:
//isLoad 方法入参接收的node是element 组件自身的节点结构,node.data才是后端返回的节点数据,resolve是一个方法,用于渲染节点
async isLoad(node, resolve) {
//如果展开第一级节点,从后台加载一级节点列表
if (node.level == 0) {
this.loadfirstnode(resolve);
}
//如果展开其他级节点,动态从后台加载下一级节点列表
if (node.level >= 1) {
this.loadchildnode(node, resolve);
return resolve([]); // 加上这个,防止在该节点没有子节点时一直转圈的问题发生。
}
},
//加载第一级节点
async loadfirstnode(resolve) {
let params = {
level: 1,
};
let res = await getAreaListTree(params)
return resolve(res);
},
// 加载子节点
async loadchildnode(node, resolve) {
console.log(node.data)
let params = {
level: node.data.level + 1,
id: node.data.id,
allpath: node.data.allpath
}
let res = await getAreaListTree(params)
return resolve(res);
},