Element-ui el-tree 异步加载 懒加载 只能选择一个同级节点

需求

树的数据是通过异步(懒)加载而来,且要求同级节点只能选择一个,一个常见的应用场景是选择住址,选择了山东省不能同时选择河北省,选择了每个节点,显示完整的从根节点到本节点的路径 。
在这里插入图片描述

分析

Element-ui的el-tree的选中是复选框实现,可以选择多个同级节点,如果用它自带的select api(getCheckedNodesgetCheckedKeys) 比较复杂且不可靠;因而换了一种实现思路,不用它的select api,改为自己存储当前节点,tree组件支持node-click事件,点击node时,存储当前点击的node,只存最后一次点击的node,node对象中可以拿到父node,父node可以拿到它的父node,一级一级上去就可以到根节点。

<el-tree//对应后端返回数据格式中的key字段名称node-key="key"highlight-current:props="treeProps":load="loadChildNode"lazy@node-click="handleNodeClick()"/>选择地址:{{ lastClickedNodePath.map(node => node.name).join("") }}
data(){return {// 搜索住址对话框treeProps: {//对应后端返回数据格式中的name字段名称label: 'name',isLeaf: 'leaf'},//被点击节点到root的完整节点路径lastClickedNodePath:[]}   
}
//加载子节点
async loadChildNode(node, resolve) {console.log('加载现住址子节点回调输入参数', node, resolve)if (node.level === 0) {console.log('根节点名称', this.curZone.name)return resolve([{ name: this.curZone.name, key: this.curZone.key }])}const code = node.data.keyconst { data } = await getChildZonesByCode(code)  //发送请求从后端获取数据,数据格式 [{name:"",key:""}]// 加载村级的下一级时,子节点设置为叶子节点if (node.level === 2) {data.map(ele => {ele.leaf = true})}return resolve(data)
},
//点击节点,获取完整节点路径
handleNodeClick(data,node,component){this.lastClickedNodePath= this.getNodePath(node, [])
}
/**
* 获取完整的节点路径
*/
getNodePath(selectNode, nodePaths) {if (!nodePaths) {nodePaths = []}if (!selectNode.data) {return nodePaths}//根节点代码const ROOT_NODE_CODE = '0'if (selectNode.data.value === ROOT_NODE_CODE) {return nodePaths}//将元素添加到头部nodePaths.unshift({...selectNode.data})if (selectNode.parent) {return this.getNodePath(selectNode.parent, nodePaths)}return nodePaths
},

回显/还原初始状态

上边的地址选择是在对话框中,要求每次打开选择框,只显示根节点,没找到好办法,一个偏hack的方法是,每次打开对话框,重新渲染。

<el-treev-if="digVisible"
/>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/486626.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux文件管理】重定向内核级缓冲区用户级缓冲区

文章目录 文件管理文件描述符表&#xff08;files_struct&#xff09;重定向重定向概念 文件的内核级缓冲区和用户级缓冲区内核级缓冲区用户级缓冲区 总结 文件管理 文件描述符表&#xff08;files_struct&#xff09; 上一期我们将文件描述符讲完了&#xff0c;这期来讲讲文…

【H2O2|全栈】Node.js与MySQL连接

目录 前言 开篇语 准备工作 初始配置 创建连接池 操作数据库 封装方法 结束语 前言 开篇语 本节讲解如何使用Node.js实现与MySQL数据库的连接&#xff0c;并将该过程进行函数封装。 与基础部分的语法相比&#xff0c;ES6的语法进行了一些更加严谨的约束和优化&#…

OpenCV 图像基本操作

OpenCV快速通关 第一章&#xff1a;OpenCV 简介与环境搭建 第二章&#xff1a;OpenCV 图像基本操作 OpenCV 图像基本操作 OpenCV快速通关第二章&#xff1a;OpenCV 图像基本操作一、相关结构体与函数介绍&#xff08;一&#xff09;cv::Mat 结构体&#xff08;二&#xff09;c…

故障识别 | GADF-CNN-SSA-XGBoost数据分类预测/故障识别(Matlab)

故障识别 | GADF-CNN-SSA-XGBoost数据分类预测/故障识别&#xff08;Matlab&#xff09; 目录 故障识别 | GADF-CNN-SSA-XGBoost数据分类预测/故障识别&#xff08;Matlab&#xff09;分类效果基本描述程序设计参考资料 分类效果 基本描述 格拉姆角场差&#xff08;GADF&#…

树莓派4B android 系统添加led灯 Hal 层

本文内容需要用到我上一篇文章做的驱动&#xff0c;可以先看文章https://blog.csdn.net/ange_li/article/details/136759249 一、Hal 层的实现 1.Hal 层的实现一般放在 vendor 目录下&#xff0c;我们在 vendor 目录下创建如下的目录 aosp/vendor/arpi/hardware/interfaces/…

基于Matlab的变压器仿真模型建模方法(9):三相变压器组的建模仿真(续)

1.引言 前一节介绍了基于混合磁链的考虑主磁路饱和情况的三相变压器组的Simulink仿真模型,并应用它对Y,yn接法三相变压器组的瞬态过程进行了仿真计算。这一节建立一个新的基于等效电路的Simulink三相变压器组的仿真模型,并应用它对Y,d11接法的三相变压器组的瞬态过程进行仿…

【Atcoder】【ABC383】A- Humidifier 1加湿器 题解

前言 不知道大家有没有关注过AtCoder 这是小日子那边的一个网站&#xff0c;每周都会有比赛 比起CF等等&#xff0c;最大的优点就是延迟低&#xff0c;题目质量也不错 计划以后每周更新题解了 正文 题目传送门A - Humidifier 1 题目大意 有一个加湿器&#xff0c;给定 …

LeetCode 热题 100_反转链表(23_206_简单_C++)(单链表_递归)

LeetCode 热题 100_反转链表&#xff08;23_206&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;迭代&#xff09;&#xff1a;思路二&#xff08;简化方法一(迭代)代码&#xff09;&#xff1a;思路三&…

49 基于单片机的湿度和光照监测

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于AT89C52单片机&#xff0c;采用DHT11温湿度传感器检测土壤湿度&#xff0c;光敏电阻连接ADC0832数模转换器作为光敏传感器&#xff0c;然后通过LCD1602显示湿度和光照值&#xff0c;如果湿度低…

【C语言】程序设计--算法

文章目录 1. 判断两个数的大小并交换2. 计算三角形面积3. 根据x的值计算y4. 字符大小写转换5. 百钱百鸡问题6. 计算公式y的值7. 输出所有的水仙花数8. 计算n的阶乘9. 下三角数据10. 斐波那契数列11. 学生成绩统计12. 数组的平均值1. 判断两个数的大小并交换 介绍: 从键盘输入…

嵌入式Linux,字符串的处理,以及相关函数详解

C 语言库函数中已经给我们提供了丰富的字符串处理相关函数&#xff0c;基本常见的字符串处理需求都可 以直接使用这些库函数来实现。 1. 字符串输入/输出 在程序当中&#xff0c;经常需要在程序运行过程中打印出一些信息&#xff0c;譬如调试信息、报错信息、中间产生的变量的…

400G智算网络助力知名自动驾驶企业算力训练提效

根据Gartner的最新趋势预测&#xff0c;自动驾驶技术正迅速发展&#xff0c;预计在未来几年内将带来显著的商业效益&#xff0c;特别是在决策智能和边缘人工智能领域。目前&#xff0c;一家领军企业正积极拥抱基于大模型的数字化转型之路&#xff0c;作为自动驾驶领域的佼佼者&…

【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(三)

目录 ARC规则 概要 所有权修饰符 __strong修饰符 __weak修饰符 __unsafe_unretained修饰符 ___autoreleasing修饰符 ARC规则 概要 “引用计数式内存管理”的本质部分在ARC中并没有改变&#xff0c;ARC只是自动地帮助我们处理“引用计数”的相关部分。 在编译单位上可以…

数学活动是什么过程?

有专家说&#xff1a;数学活动是建构的操作过程&#xff0c;建构的过程必须是探索、发现和创造的过程。 什么是建构&#xff0c;建构就是构建&#xff0c;就是建立。明明有让人一看就明白的词&#xff0c;人非得弄得云遮雾绕。 也难怪&#xff0c;现在什么都流行上云。 上云…

windows11安装Linux子系统配置大数据hadoop

zai 1、安装linux子系统 1、启用适用于 Linux 的 Windows 子系统 搜索框里面输入<开发>即可跳转&#xff0c;打开开发人员模式 命令行里面输入systeminfo确定是否电脑已经支持虚拟化&#xff0c;是则可以继续安装: 2、然后先启用“适用于 Linux 的 Windows 子系统”可选…

RPC设计--从reactor设计 (IOthread)

主从reactor架构 一般的一个网络IO库都是主从reactor模式&#xff0c;即主线程中有一个MainReactor&#xff0c;其负责监听ListenFd&#xff0c;当接受到新的用户连接时&#xff0c;返回的clientfd并不会加入的MainReacotr&#xff0c;而是在子线程&#xff08;这里称为IO线程&…

微信创建小程序码 - 数量不受限制

获取小程序码&#xff1a;小程序码为圆图&#xff0c;且不受数量限制。 目录 文档 接口地址 请求方式 功能描述 注意事项 获取 scene 值 请求参数 返回参数 对接 请求方法 获取小程序码 调用获取小程序码 总结 文档 接口地址 https://api.weixin.qq.com/wxa/get…

【机器学习】基于SVM、逻辑回归和CNN的手写数字识别:性能对比与应用分析

基于SVM、逻辑回归和CNN的手写数字识别&#xff1a;性能对比与应用分析 1 基于SVM对手写数字识别2 基于逻辑回归对手写数字进行识别3 基于CNN对手写数字进行识别总结对比分析 1 基于SVM对手写数字识别 在使用SVM方法对手写数字进行识别的时候&#xff0c;我采用了一对多&#…

群控系统服务端开发模式-应用开发-邮件工厂电信189发送开发

一、电信189邮件工厂开发 1、添加框架对应的SDK composer require phpmailer/phpmailer 2、添加电信189邮件工厂 在根目录下extend文件夹下Mail文件夹下channel文件夹下&#xff0c;创建电信189邮件发送工厂并命名为DianxinMailSender。记住&#xff0c;一定要在电信189邮件发…

部署loki,grafana 以及springcloud用法举例

文章目录 场景docker 部署grafanadocker-compose部署loki维护配置文件 local-config.yaml维护docker-compose.yml配置启动 grafana 添加loki数据源springcloud用法举例查看loki的explore,查看日志 场景 小公司缺少运维岗位&#xff0c;需要研发自己部署日志系统&#xff0c;elk…