需求是这样的:因为后台的树结构数据太多,所以再点击子节点的时候把子节点的id传给后台,树结构根据后台返回的数据,自动添加子节点
页面:

在这里插入图片描述
html代码

<el-tree    ref="tree"  @node-click="handleNodeClick"></el-tree>

用到的属性有:

> 1.updateKeyChildren

(这次动态添加未用到这个参数,可了解)
updateKeyChildren 异步获取数据,并用append或updateKeyChildren增加子节点 通过 keys 设置节点子元素,使用此方法必须设置 node-key 属性 (key, data) 接收两个参数,
1.1 节点 key
1.2 节点数据的数组 假如你的节点数据没有一个唯一的key(一般是id),则不能用,但是这个方法第二个参数是数组,比较方便

> 2. append

append 为 Tree 中的一个节点追加一个子节点 (data, parentNode) 接收两个参数,
2.1. 要追加的子节点的 data (这个data就只是一个子节点,假如你有多个,则需要循环添加)
2.2 子节点的 parent 的 data、key 或者 node
this.$refs[‘tree’].append(item,node)

> 3. expanded

展开主要看你所调用的方法有什么默认的参数 node-click 节点被点击时的回调 共三个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、节点对应的 Node、节点组件本身。
在node(对应的节点数据)中expanded决定节点是否是展开的,node.expanded = !node.expanded;
可以看官方文档对Attributes的说明或是在console.log里面输出看看

页面应用代码

handleNodeClick(data,node){
      systemApi.getOrganizeTree({ flag: 1, type: data.type, bmid: data.id }).then(res => {
        console.log('树结构数据', res.data.listtreenode);
        // 如果count>0那么就有子节点数据
        if (data.count > 0) {   //如果当前点击的节点count>0那么就循环数据
          for (let i = 0; i < res.data.listtreenode.length; i++) {
            **this.$refs['tree'].append(res.data.listtreenode[i], data);**  //给tree树结构添加节点数据
          }
        }
      });
}

this.$refs[‘tree’].append(res.data.listtreenode[i], data);

GitHub 加速计划 / eleme / element
54.06 K
14.63 K
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:3 个月前 )
c345bb45 7 个月前
a07f3a59 * Update transition.md * Update table.md * Update transition.md * Update table.md * Update transition.md * Update table.md * Update table.md * Update transition.md * Update popover.md 7 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐