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);
更多推荐
所有评论(0)