element ui 的树形结构,点击节点动态增加子节点并自动展开

需求是这样的:因为后台的树结构数据太多,所以再点击子节点的时候把子节点的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);

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值