vue中el-tree实现懒加载、动态增删改

本文介绍了在Vue项目中利用ElementUI的el-tree组件实现懒加载和动态增删改组织树节点的方法。通过设置`ref`、`load`和`lazy`属性,结合组件提供的`expand`、`refreshNodeBy`或`loadNode`方法,实现了数据量大的情况下高效的操作树形结构。文章提供了两种实现方式的模板和方法代码示例。

前言

在最近的一个项目中,有一个组织树的需求,效果图:
在这里插入图片描述

因为数据量比较大,要求懒加载并且能够在树上对组织进行操作,项目使用的是vue+ElementUI。ElementUI中有个el-tree,正好可以拿来用。项目引入ElementUI什么的就不说了,大家都知道,直接使用el-tree实现需求吧。

首先看下ElementUI中关于el-tree懒加载的介绍
关键的就是ref、load和lazy属性,于是开始写代码
第一种:
template中:

<el-tree
	ref="asyncTree"
    lazy
    :props="props"
    :load="loadNode"
    :node-key="id"
   ></el-tree>

methods中:

 refreshNodeBy(id){
	let node = this.$refs.asyncTree.getNode(id); // 通过节点id找到对应树节点对象
	console.log(node, 'refreshNodeBy')
	node.loaded = false; 
	node.isLeaf = false;
	node.expand(); // 主动调用展开节点方法,重新查询该节点下的所有子节点
}

只要是找到对应的树节点,使用expand方法,最后在需要刷新某个节点的时候,主动调用refreshNodeBy这个方法。

第二种:
template中:

<div class="pollutionsource-true">
   <el-button type="primary" size="small" @click="addNode()">添加排污口类型</el-button>
	<el-tree
	    lazy
	    :props="props"
	    :load="loadNode"
	    default-expand-all
	    highlight-current
	    @node-click="handleNodeClick"
	    style="margin-bottom:10px;"
	  ></el-tree>
	  <el-button type="primary" size="mini" @click="editNode()">编辑</el-button>
	  <el-button type="danger" size="mini" @click="deletetype()">删除</el-button>
</div>

methods中:

loadNode(node, resolve) {
	if (node.level === 0) {
				return resolve([{ name: "污染源类型", id: 0 }]);
      } else if (node.level === 1) {
				Sewageoutlet().then(val => {
					// console.log(val, "11");
          const nodes = val.data.map(res => ({
						name: res.outfallTypeName,
            level: node.level,
            value: res
          }));
          // console.log(nodes,'nodes')
          resolve(nodes);
					this.node = node
					this.resolve = resolve
        });
      } else {
        return resolve([]);
      }
		}

node、resolve要先保存下来,最后在需要刷新某个节点的时候,主动调用loadNode(node, resolve)这个方法。

名言警句:处事不必求功,无过便是功。为人不必感德,无怨便是德。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值