当el-tree的属性设置为lazy时,如果对el-tree进行增加或者删除等操作时,el-tree没办法更新数据,只能重新刷新页面才能重新触发load,手动调用load方法也不会触发。
这时候采用 v-if也就是tree的显示与隐藏来触发load
我这里简写一个树的结构
<el-tree
v-if="treeVisible"
:load="loadNode"
>
<span slot-scope="{ node, data }">
<el-button @click="append(node, data)">增加节点</el-button>
</span>
</el-tree>
data(){
return{
treeVisible:true
}
},
methods:{
loadNode(){
...
}
}
假如你新增一个节点之后,想再打开el-tree时能看到你刚增加的节点,那么就在调用接口里面通过改变treeVisible的值就可以触发
append(node,data){
//url是接口地址 data是要传的数据 我简单的举个例子
this.$post('url',{
data:data
}).then(data=>{
//就是这段代码 让tree隐藏再显示就会触发load方法
this.treeVisible = false
this.$nextTick(()=>{
this.treeVisible = true
})
})
}
当然具体情况具体对待,比如我把el-tree放到了一个el-popover(element的组件,就是一个弹出框)里面,我就把改变treeVisible值的那段代码放到el-popover的@show事件中,这个是el-popover的属性(element-ui官网上都能看到),就是el-popover出现的时候就会被触发,就意味着我的树在弹出框弹出来时重新加载,这样得到的就是最新的数据。删除编辑以此类推。