其他分享
首页 > 其他分享> > vue + element 树形表 懒加载 增加和删除时 刷新节点

vue + element 树形表 懒加载 增加和删除时 刷新节点

作者:互联网

element 树形表在懒加载模式下官方没有提供实时局部刷新节点的方法,在网上看了好多博客也没有比较好的办法

我能想到最直接的办法就是读源码了,在差不多三小时的源码浏览后终于在tree.js中找到懒加载关键的一个方法:

loadData(row, key, treeNode) {
      const { load } = this.table;
      const { lazyTreeNodeMap, treeData } = this.states;
      if (load && !treeData[key].loaded) {
        treeData[key].loading = true;
        load(row, treeNode, (data) => {
          if (!Array.isArray(data)) {
            throw new Error('[ElTable] data must be an array');
          }
          treeData[key].loading = false;
          treeData[key].loaded = true;
          treeData[key].expanded = true;
          if (data.length) {
            this.$set(lazyTreeNodeMap, key, data);
          }
          this.table.$emit('expand-change', row, true);
        });
      }
    }
this.$set(lazyTreeNodeMap, key, data)
lazyTreeNodeMap:this.$refs.table.store.states.lazyTreeNodeMap
key:就是table-key
data:节点的children数组

于是写一个更新某个节点的子节点的方法:

refreshRow(id){
      getList({ pid: id }).then(res => {
        if (res.success) {
          this.$set(this.$refs.table.store.states.lazyTreeNodeMap, id, res.data.dataList)
        }
      })
    }

标签:vue,treeData,element,树形,key,table,data,节点,lazyTreeNodeMap
来源: https://blog.csdn.net/Ted_Wong1995/article/details/113915945