//HTML部分
<el-tree
:data="treeData"
:props="defaultProps"
node-key="id"
:filter-node-method="filterNode"
icon-class="iconfont"
:load="loadNode"
lazy
:highlight-current='true'
@node-click='treeClick'
:render-content="renderContent"
v-show="!searchFlag"
ref="ElTree"
></el-tree>
主要方法是loadNode,可以把第一次请求树结构放到里面,这样在请求完成后就可以设置当前节点展开啦。PS:不需要再在额外请求数据。
//js部分
const loadNode = (node, resolve) => {
const regionID = node.data.regionId;
const regionType = node.data.regionType;
if (node.level === 0) {
state.firstNode = node;
fetchDeviceTree()
.then((res) => {
return resolve(res.data.result.count || []);
})
.then(() => {
nextTick(() => {
let nodeData = state.firstNode.childNodes[0];
nodeData.expanded = true;
nodeData.loadData();
});
});
}
if (regionType === 5) {
node.isLeaf = true;
fetchDeviceTree({ regionType: regionType, regionID: regionID }).then(
(res) => {
return resolve(res.data.result.records || []);
}
);
} else if (node.level !== 0) {
fetchDeviceTree({
regionType: regionType,
regionID: regionID,
}).then((res) => {
return resolve(res.data.result.count || []);
});
}
};