以下是element官网懒加载自定义叶子节点的示例,我仅加上一些注释,以便于理解
<el-tree
:props="props" // 指定节点的label以及子节点的data等
:load="loadNode" // 点击某节点时会调用该方法,以查询该节点的子节点,同一节点多次点击仅执行(加载)一次
lazy // 必须加上该属性
show-checkbox>
</el-tree>
<script>
export default {
data() {
return {
props: {
label: 'name', // 指定节点的label为data中的name属性
children: 'zones', // 指定节点的子节点的数据为data的zones属性的值
isLeaf: 'leaf'
},
};
},
methods: {
loadNode(node, resolve) {
if (node.level === 0) { // 加载级别为0的节点的子节点,该节点不显示,渲染完tree时自动执行
return resolve([{ name: 'region' }]);
}
if (node.level > 1) return resolve([]); // 级别为2及以上无子节点,也就是说该数的层级不超过2层
setTimeout(() => { // 级别为1时获取子节点,通过延时函数来模仿从后台获取的效果
const data = [{
name: 'leaf',
leaf: true
}, {
name: 'zone'
}];
resolve(data);
}, 500);
}
}
};
</script>