Element Tree树形组件懒加载,刷新数据
程序员文章站
2022-05-03 18:04:00
...
在项目中很多机构管理中会用到tree展示机构数据,当数据发生改变后该怎么刷新呢?
在网上搜索了很久,最后结合网上的方案自己想到了一个办法。
1.首先在第一次初始化的时候把node和resolve保存下来为rootNode
和rootReslove
,
2.数据改变的时候删除保存下来的node的children,将rootNode
和rootReslove
做为参数手动调用load方法,
比如说在新增成功后直接调用this.resetNode()
就能刷新tree,相关代码:
<el-tree
:props="props"
:load="loadNode"
lazy
:highlight-current="true"
@node-click="clickLoad"
ref="load"
>
props: {
label: 'name',
children: 'data',
isLeaf: 'leaf'
},
// 查询组织架构
loadNode (node, resolve) {
if (node.level === 0) {
this.rootNode = node
this.rootResolve = resolve
getConfigManageList('', {name: this.keywords}).then(res => {
this.pageData = res.data
resolve(res.data)
this.loading = false
}).catch(() => {
resolve([{name: '暂无组织...', leaf: true}])
this.loading = false
})
}
if (node.level > 0) {
getConfigManageList(node.data.code, {name: this.keywords}).then(res => {
this.pageData = res.data
res.data.forEach(item => {
if (item.subNumber <= 0) {
item.level = true
} else {
item.level = ''
}
})
this.fatherCode = node.code
resolve(res.data)
})
}
},
// 刷新tree
resetNode(){
var theChildren = this.rootNode.childNodes
theChildren.splice(0, theChildren.length)
this.loadNode(this.rootNode, this.rootResolve)
},
还有这种操作!同事们都惊呆了,纷纷夸我厉害