iview tree树形菜单实践之数据回显与选中

news2025/1/12 13:09:57

iview tree树形菜单在使用过程中,多多少少有一些小坑,本文简单罗列几个:

避坑指南: 关于iview tree树形菜单在使用过程中存在父级菜单的数据传输和回显问题

简单就是两个方面:勾选后数据传输和回显问题。

一,数据传输问题:

上篇文章简单介绍了 iview tree渲染数据及获取选中数据,使用方法:

@on-check-change="checkMenu"

但是存在一个问题:

在这里插入图片描述
通过此方法,勾选一般子级菜单时,它不会传该父级菜单的id。需要全选子级菜单时才会带上父级的id。这是一个比较棘手的问题。那么,我们可以通过方法 $ref操作tree的dom获取数据:

 <Tree :data="menuTree" show-checkbox  ref="menuTree" 
 @on-check-change="checkMenu" @on-select-change="selectMenu"></Tree>

从而进行同时选中一半子级菜单的id及所选的父级菜单id

this.$refs.menuTree.getCheckedAndIndeterminateNodes()

二,数据回显问题:

当解决掉第一种存在的问题后,那么,在数据显示时,也会存在问题。
比如,当操作勾选到一个父菜单下的一部分子菜单数据时,显示时,可以通过已经配置过的数据来比对所有选项判断显示父级子级的菜单是否勾选,勾选状态通过子段(checked)遍历赋值,进行渲染勾选状态回显:

item['checked'] = true;

但是不能只通过这个方法的(true,false)来判断,因为不能仅仅通过父级的id显示是否勾选状态。父级状态为勾选时有两种情况:

1.只有父级菜单时;
2.父级菜单下的子级菜单全部选中时,他会自动勾选

所以存在上面这种情况,当回显数据为一个父级id和一部分该父级下的子级组合时,会出现bug:

因为勾选时,我们传了父级id,所以回显显示时,这个傻瓜式组件,它根据父级id回显了所有,然而实际情况只需显示一部分即可。这个就是tree的坑。

解决方法是:

判断只有父级的id且该父级下不存在子级时让它回显

方法:

this.selMenuIds.includes(item.id)&&item.children == null

而子级让它自然显示即可。子级全部选中时,父级会自动显示的,这块不用担心。

具体代码:

 if (data != null && data != undefined) {
                data.forEach((item, index) => {
                  if (this.selMenuIds.includes(item.id)&&item.children == null) {
                    item['checked'] = true;//仅父节点选中时回显
                  }
                  if (item.children != null && item.children != undefined) {
                    item.children.forEach((it, index) => {
                      if (this.selMenuIds.includes(it.id)) {
                        it['checked'] = true
                      }
                    })
                  }
                })
                this.menuTree = data
  }

往期更多精彩:

1.vue+iView 实现可输入的下拉框
2.vue+iView 权限实践之动态显示侧边栏菜单
3.iView复合型输入框动态生成表达式

喜欢就多多点赞关注。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac 环境下安装MongoDB

目录 一、下载MongoDB数据库并进行安装 二. 解压放在/usr/local目录下 三. 配置环境变量 “无法验证开发者”的解决方法 mongodb可视化工具的安装与使用 一、下载MongoDB数据库并进行安装 下载地址&#xff1a;https://www.mongodb.com/try/download/community 二. 解压…

大数据项目实战之数据仓库:用户行为采集平台——第2章 项目需求及架构设计

第2章 项目需求及架构设计 2.1 项目需求分析 1&#xff09;采集平台 &#xff08;1&#xff09;用户行为数据采集平台搭建 &#xff08;2&#xff09;业务数据采集平台搭建 2&#xff09;离线需求 3&#xff09;实时需求 4&#xff09;思考题 1、项目技术如何选型&…

索引调优的一点基础知识

索引是什么 通过 show profile for query 1&#xff1b; 可以查看该查询语句执行的整个过程&#xff0c;则我们就能分析出那部分是需要优化的索引是帮助Mysql高效获取数据的数据结构 索引存储在文件系统中 索引的文件存储形式与存储引擎有关 索引文件的结构 hash 范围查找不方便…

深度学习-第T2周——彩色图片分类

深度学习-第T2周——彩色图片分类深度学习-第P1周——实现mnist手写数字识别一、前言二、我的环境三、前期工作1、导入依赖项并设置GPU2、导入数据集3、归一化4、可视化图片四、构建简单的CNN网络五、编译并训练模型1、设置超参数2、编写训练函数六、预测七、模型评估深度学习-…

产品经理如何去做需求分析,建议收藏

目录 一、需求收集 1. 产品需求 2. 功能需求 3. 迭代需求 二、需求分析 1. 系统了解需求&#xff08;5W2H法&#xff09; 2. 判断需求真实性 3. 分析现有解决方案-竞品分析 4. 行业结构分析 5. 总结 三、方案验证 四、商业模式 五、路线规划 六、战略制定 七、总…

基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…

监控视频模糊看不清怎么处理提高监控视频清晰度?

随着监控设备的日益普及&#xff0c;监控视频的画质也成为了人们关注的焦点。然而&#xff0c;很多人反映监控视频画质不佳&#xff0c;有些甚至看不清。那么&#xff0c;对于这样的问题&#xff0c;我们该如何去处理呢&#xff1f;监控画面模糊变清晰处理方法如下&#xff1a;…

网上购物网站的设计

技术&#xff1a;Java、JSP等摘要&#xff1a;本文介绍了JSP和JAVA等相关技术&#xff0c;针对网上购物系统的实际需求&#xff0c;设计开发了一个基于JSP的小型电子商务网站也就是网上购物系统&#xff0c;。在设计开发中&#xff0c;采用的是SSH框架&#xff08;strutsspring…

一篇教你解决如何在不加锁的情况下解决多线程问题!

怎样在不加锁的情况下解决线程安全问题&#xff0c;你需要了解lock free和wait free这两个概念&#xff0c;在此之前我们先从最简单的有锁编程开始。 我们知道&#xff0c;多线程同时修改共享变量时会出现数据不一致的问题&#xff0c;比如多个线程同时对一个变量加1&#xff…

angular自定义实现管道

参考angular官方文档角 - 管 (angular.io)选择描述name要在模板绑定中使用的管道名称。 通常使用较小的驼峰大小写&#xff0c;因为名称不能包含连字符。pure?如果为 true&#xff0c;则管道是纯的&#xff0c;这意味着仅当该方法的输入参数时才调用该方法 改变。默认情况下&a…

JavaScript基础四、集合类型

零、文章目录 文章地址 个人博客-CSDN地址&#xff1a;https://blog.csdn.net/liyou123456789个人博客-GiteePages&#xff1a;https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee&#xff1a;https://gitee.com/bluecusliyou/TechLearnGithub&#xff1a;https:…

C++源程序的构成————学习笔记

以下内容为&#xff0c;在学校上课时的课堂总结&#xff0c;偶尔我也会扩展一些内容内容仅供参考&#xff0c;欢迎大佬的指正简单的C程序#include <iostream> using namespace std;int main() {int x0;int y 0;cout << "请输入x,y的值"<<endl;cin…

计算机网络第八版——第二章课后题答案(超详细)

第二章 该答案为博主在网络上整理&#xff0c;排版不易&#xff0c;希望大家多多点赞支持。后续将会持续更新&#xff08;可以给博主点个关注~ 第一章 答案 【2-01】物理层要解决哪些问题&#xff1f;物理层的主要特点是什么&#xff1f; 解答&#xff1a;物理层考虑的是怎…

《C++代码分析》第二回:函数重载const char* ,char*,const char[],char[]汇编代码上的区别

一、前言 C相比C是支持函数重载的&#xff0c;现在我们详细探讨一下C函数重载与类方法承载。 二、案例代码 我们编译如下代码&#xff0c;同样的我们关闭代码优化&#xff0c;删除符号链接文&#xff08;.pdb&#xff09; #include "windows.h" #include "w…

php宝塔搭建部署实战兰空图床程序网站PHP源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套Lsky Pro兰空图床程序网站PHP的源码。感兴趣的朋友可以自行下载学习。 技术架构 PHP8.0 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&#xff0c;宝塔添加…

开源监控服务uptime-kuma

好久没写文章了&#xff0c;刚好最近用了一个开源的监控服务&#xff0c;感觉蛮有意思的&#xff0c;记录一下 &#xff08;一&#xff09;安装 uptime-kuma安装方式有几种&#xff0c;这里当然是选择大家都爱的docker,一条命令搞定 docker run -d --restartalways -p 3001:…

Linux内核调度策略、优先级、调度类

Linux内核调度策略、优先级、调度类一、Linux 内核支持调度策略二、进程优先级三、公平调度 CFS 与其它调度3.1、调度类3.2、公平调度类 CFS3.3、运行队列3.4、调度进程3.5、调度时机四、RCU机制与内存屏障一、Linux 内核支持调度策略 先进先出调度&#xff08;SCHED_FIFO&…

Linux常用命令操作

文件目录操作 查看文件列表 ls #输出列表信息 ls -l #输出详细列表信息 ls -a #输出隐藏文件 ls -la #输出包含的隐藏文件及详细信息 ll # ls-l的缩写rwx分别对应读取&#xff0c;写入&#xff0c;执行权限&#xff0c;前面有d代表是文件夹 创建文件 touch file.txt #创建…

java String类 万字详解(通俗易懂)

目录 一、前言 二、介绍和溯源 三、String类常用构造器 1.String() 2.String(byte[] bytes) 3.String(char[] value) 4.String(char[] value, int offset, int count) 5.String(String original) Δ演示 : 四、不同方式创建String类对象的区别 1.直接赋值的方式 2.常规new…

炫云渲染质量功能测试

炫云已经支持优化渲染质量&#xff0c;分别是保守优化、中度优化和深度优化&#xff0c;使用后效果图的渲染时间会有所缩短&#xff0c;尤其对低版本V-Ray和参数设置不当的场景非常有效&#xff0c;能大幅提升渲染速度及节省渲染费用&#xff0c;当然最终效果图有可能有稍许差异…