come on,Bro。直接上代码。
先看效果:
1.界面中:
1 <el-tree 2 :data="treeData" 3 :props="defaultProps" 4 :load="loadNode" 5 @node-click="handleNodeClick" 6 lazy> 7 </el-tree>
2.data中:
1 treeData: [ ], // 树节点 2 defaultProps: { // 修改el-tree默认data数组参数 3 children: 'children', 4 label: 'name', 5 id: 'id', 6 parentId: 'parentId', 7 isLeaf: false // 指定节点是否为叶子节点,仅在指定了 lazy 属性的情况下生效 8 },
3.script中:
loadNode(node, resolve) { // 加载 树数据
let that = this;
if (node.level === 0) {
that.loadtreeData(resolve);
}
if (node.level >= 1) {
this.getChildByList(node.data.id, resolve);
return resolve([]); // 加上这个,防止在该节点没有子节点时一直转圈的问题发生。
}
},
loadtreeData( resolve) { // 获取loadtreeData 就是父节点数据,getChildByList就是异步获取子节点数据
let params = {ParentID : 0};
this.$http({url: "",data: params,type: 'get'}).then(res =>{
// console.log("商品信息的 tree: ",res)
if(res.success == true) {
let data = res.data;
// 前者item.参数名称为 prop中的规定的属性名称
data.forEach(item => {
item.name = item.name;
item.parentId = item.parentId;
item.id = item.id;
item.isLeaf = true;
});
resolve(data)
}else {
return false;
}
}).catch(err =>{
console.log(err);
});
},
getChildByList( _parentID,resolve) { // 获取子节点请求
let params = {ParentID : _parentID};
this.$http({url: "",data: params,type: 'get'}).then(res =>{
if(res.success == true) {
let data = res.data;
data.forEach(item => {
item.name = item.name;
item.parentId = item.parentId;
item.id = item.id;
item.isLeaf = false;
});
resolve(data);
} else {
return false;
}
}).catch(err =>{
console.log(err);
});
},
handleNodeClick(data) { // 节点被点击时的回调
console.log(data)
},