ElementUI tree异步树(懒加载)节点新增删除编辑时实现局部刷新

最近弄一个项目,因为树形数据量较大,必须要一层层加载数据。所以采取了树形懒加载方式,但是element官方文档并未找到可直接提供刷新某个树节点的方法,那我直接对某一个子节点进行数据操作总不能整个tree刷新数据吧,这样子体验和操作数据极不方便。

          <el-tree :highlight-current="true" node-key="StandardID" ref="tree"  :load="loadNode" lazy :props="defaultProps" @node-click="handleNodeClick">
            <span slot-scope="{ node }">
                {{ node.label }}
            </span>
          </el-tree>

局部刷新:

async loadNode(node, resolve) {
     //加载数据的方法里把node,reslove存起来
      this.node = node;
      this.resolve = resolve;
      this.node.childNodes = [];

 //获取数据
if (node.level === 0) {
  const listTable = await this.getList(0) // 获取主表数据
  return resolve(listTable)
} else {
  const listData = await this.getList(node.level, node.data.StandardID)
  return resolve(listData)
}
}

手动刷新方法调用

this.loadNode(this.node, this.resolve)

以上方法对某节点新增时数据时局部数据刷新是没问题的,但是对节点某条数据编辑删除时仍是没效果(可能是本人get不到点)。以下是最终采取的解决方案,找到对应的树节点,使用expand方法:

      //对子节点进行更新
      refreshNodeBy(id) {
        let node = this.$refs.tree.getNode(id); // 通过节点id找到对应树节点对象
        node.loaded = false;
        node.expand(); // 主动调用展开节点方法,重新查询该节点下的所有子节点
      },

手动局部刷新,调用refreshNodeBy(默认是刷新当前节点下的数据,所以新增时取当前节点id,编辑时取当前节点的父级id,当编辑顶级节点时注意其父级id是没有的,加个判断即可)

//树形新增编辑删除操作刷新
Refresh_standar(data) {
let id_=data==='add'?this.currentData.StandardID:this.EditStandard.SupID
this.refreshNodeBy(id_)      
}

测试几次,没发现问题,可行

 

 

参考:https://www.cnblogs.com/heyefengyin/p/11430073.html

 

posted @ 2020-11-13 15:21  lwming  阅读(5890)  评论(1编辑  收藏  举报