Element: tree 如何重新执行load

Created on 17 Nov 2016  ·  6Comments  ·  Source: ElemeFE/element

ElementUI version

1.0.0

OS/Browers version

Vue version

Reproduction Link



Steps to reproduce

What is Expected?

What is actually happening?

我的功能是这样的,有个下拉框,选择后根据不同的下拉选项来加载tree,
tree我使用的是例子中第二种写法load数据的,
问题是,现在tree只加载一次,如何重新调用load,
我使用$forceUpdate()为什么也不会重洗刷新?
新手,求赐教

Most helpful comment

您好,tree懒加载 根节点的重新加载 这个api计划啥时候有添加吗

All 6 comments

如果每次加载 Tree 的数据都是完整的,树节点不需要懒加载,那么不要用第二种方式,用第一种,直接操作 data 属性。

如果 Tree 的节点数据需要懒加载,现在并没有重新加载根节点的机制,需要我新增 API 来做这件事。

@furybean
谢谢你的回答。
但是第一种方式,怎么才能添加多层数据,我只能添加2层。
如果可以,请讲一下怎么做,谢谢。

我在看源码时发现了一个tree.root.setData方法
我在切换的时候,
var vm = this.$refs.resourceTree;
vm.tree.root.setData(newTreeRootNode);
这样就重新给tree设置了根节点,然后就可以再次点击根节点来调用load
可以说达到了我的目的,但是这样做是否有问题,我对源码看的不太懂。

多层数据只要保证你的数据使用 children 属性递归下去就可以了:

const data = [{
    id: 1,
    label: 'Level one 1',
    children: [{
      id: 11,
      label: 'Level two 1-1',
      children: [{
        id: 111,
        label: 'Level two 1-1-1'
      }, {
        id: 112,
        label: 'Level two 1-1-2'
      }]
    }]
  }, {
    id: 2,
    label: 'Level one 2',
    children: [{
      id: 21,
      label: 'Level two 2-1'
    }, {
      id: 22,
      label: 'Level two 2-2'
    }]
  }, {
    id: 3,
    label: 'Level one 3',
    children: [{
      id: 31,
      label: 'Level two 3-1'
    }, {
      id: 32,
      label: 'Level two 3-2'
    }]
  }];

您好,tree懒加载 根节点的重新加载 这个api计划啥时候有添加吗

您好,非常感谢贵团队提供的开源库,非常优秀的框架,关于树形结构,如果使用懒加载以及:load方法,chackbox默认选中的节点,会自动请求该节点的子集,这在数据量比较大的情况下,给浏览器造成了压力,是我使用方法不对么?还请指点~

// 重新重置根节点
const tree = this.$refs.tree.root; // root在this.$refs.tree中找到
tree.setData(this.data_level1);

Was this page helpful?
0 / 5 - 0 ratings