所为的属性懒加载其实就是一次只展示一层 当用户点击时再去根据他点击的这个数据去请求他的子集
<el-tree
:load="loadNode"
:props="props"
node-key="id"
ref="tree"
lazy
>
<span
class="custom-tree-node"
style="display:flex;align-items: center;"
slot-scope="{ data }"
>
<span>{{data.name}}</span>
</span>
</el-tree>
load是树形的数据来源 但他是一个函数 node-key是每一条数据的唯一标识 就是这个数据永远不会和其他数据值重复的字段 最规范的当然就是id ref是可以拿到这个元素的值 vue基础中有介绍ref就不多说了 lazy 设置页面加载后自动执行一次load绑定的函数 不然你的树形就是空的 需要在data中加一个props 对应属性标签属性props
data(){
return {
props: {
label: 'name',
isLeaf: 'leaf'
}
}
}
下面我来简单编写一个load绑定的函数 给大家参考一下
loadNode(node, resolve) {
if (node.level === 0) {
getIdlazyTree(0).then((src) => {
if(src.data.length > 0){
let peopleList = src.data;
peopleList = peopleList.map(item =>{
item.leaf = false;
return item
})
return resolve(peopleList)
}else{
return resolve([])
}
})
}else{
getIdlazyTree(node.data.id).then((src) => {
if(src.data.length > 0){
let peopleList = src.data;
peopleList = peopleList.map(item =>{
item.leaf = false;
return item
})
return resolve(peopleList)
}else{
return resolve([])
}
})
}
},
看着比较多但确实还是比较简单的 对照我的注释 很容易就看懂
|