el-tree的使用,懒加载数据

news/2024/11/28 7:24:06/

前段时间碰到项目需要使用el-tree,由于未接触过还是花费了一段时间,特此记录一下。

需求

要初始化树形数据,点击展开时请求后端数据返回,组装成新树再渲染展示。

 

来吧展示

<el-form-item label="实体类型" prop="entityType"><el-popover placement="bottom" width="200" trigger="click"v-model="popoverVisible"><el-tree style="background: transparent;color: #fff;":data="entityTypes" :props="defaultProps"lazy  //load懒加载时:load="loadNode"才生效:load="loadNode":expand-on-click-node="false"@node-click="selectEntityTypeHandler"></el-tree><el-input slot="reference" readonly size="small" style="width: 82%;cursor: pointer" placeholder="请选择实体类型" v-model="form.selectedEntityType"></el-input></el-popover>
</el-form-item>

此处省略选择组件时请求后端数据的代码

defaultProps设置如下,isLeaf为是否为最后一层节点,是否还可展开,在请求返回数据后组装数据,在为最后一层数据是isLeaf为true,则不会展示左侧展开箭头。下面load方法中有组装示例以及效果展示

defaultProps: {children: 'children',label: 'label',isLeaf: "isLeaf"},

我这边在监听到事件后使用async关键字去请求后端数据,在展开节点时也使用async请求后端数据、返回后渲染

  //懒加载async loadNode(node, resolve){var self = this;if (node.level === 0) {//本地的数据,一个承载中国字样的数组;return resolve(self.form.entityTypes);} else{if (node.data.catalog) {//目录;let rs = await apiGetEntityDirType(node.data.entityDirInfo.directoryid, node.data.entityDirInfo.businessdbid);if (rs && rs.data && rs.data.success) {rs.data.data.forEach((obj)=>{if (obj.catalog){obj.label=obj.entityDirInfo.directoryName;}else {obj.label=obj.datasetInfoVO.datasetAlias;obj.isLeaf=true;}});return resolve(rs.data.data)};}}},

最终效果如图

 

搞定!!!

突然就想对领导说...

 

若有问题,还请各位大佬批评指正😁  🌹🌹🌹

 


http://www.ppmy.cn/news/487372.html

相关文章

后端一次返回过多数据,前端应该如何优化处理?

我们可以采用延迟加载的策略&#xff0c;根据用户的滚动位置动态渲染数据。 创建一个server.js const http require(http) const port 8000;let list [] let num 0// create 100,000 records for (let i 0; i < 100_000; i) {numlist.push({src: https://miro.medium.…

CentOS7中使用nfs共享资源

nfs服务器&#xff1a;192.168.186.10 nfs客户端&#xff1a;192.168.186.71&#xff0c;192.168.186.74&#xff0c;192.168.186.89&#xff0c;192.168.186.92 需求&#xff1a;客户端这四台获取服务端的/home/wwwweb/ea目录 1&#xff1a;nfs客户端和服务端都要先启动rpcb…

数据结构(一二章链表题目)

已知长度为n的线性表A采用顺序存储结构&#xff0c;请写一时间复杂度为O(n)、空间复杂度为O(1)的算法&#xff0c;该算法删除线性表中所有值为item的数据元素。 #include <iostream> #include<malloc.h> #include<cstdio> using namespace std; typedef int…

springboot2.1.1 mybatis mysql连接weblogic12的JNDI数据源,并在weblogic中部署

目测只能把springboot打成war包&#xff0c;部署到weblgic上。 因为开发环境下用main函数运行项目&#xff0c;会报错&#xff1a; Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet par…

c++(sum求和---静态数据成员)

#include<iostream> using namespace std; class myclass { public:myclass(int a,int b,int c);static void getsum();//声明静态函数成员private:int a,b,c;static int sum;//s声明静态数据成员}; int myclass ::sum0;//定义并初始化静态数据成员 myclass::myclass(int…

mysql同一实例多个数据库数据同步

方案一&#xff1a;使用触发器同步 优点&#xff1a; 工作效率和开发效率上有很大的提高 缺点&#xff1a; 增加数据库服务器的开销 具体需求 sakila数据库中的user_test表数据&#xff0c;同步到test库的user_test表&#xff0c;以及world库的user_test表 具体实现 使用…

算法(DFS->树与图的深度优先遍历->树的重心 )

给定一颗树&#xff0c;树中包含n个结点&#xff08;编号1~n&#xff09;和n-1条无向边。 请你找到树的重心&#xff0c;并输出将重心删除后&#xff0c;剩余各个连通块中点数的最大值。 重心定义&#xff1a;重心是指树中的一个结点&#xff0c;如果将这个点删除后&#xff…

ES6 中 Map 和 Set 数据结构

Map 为什么要引入Map? 传统的对象的键只能用字符串&#xff0c;局限性比较大&#xff0c;所以引入了Map Map介绍 Map类似于对象&#xff0c;也是键值对的集合&#xff0c;但是键的范围不限于字符串&#xff0c; 各种类型(包括对象)的值都可以作为键&#xff0c; Object 结构提…