当前位置: 首页 > news >正文

解决 el-tree setChecked 方法偶尔失效的方法

目前在大多数公司中,菜单的权限控制都是不可或缺的功能

在和后端配合做权限控制的时候不可避免的会用到  el-tree

然而这个组件本身带的坑不少

我们需要回显对应角色拥有的菜单,在不严格的模式下,父节点的选中会连带子节点的选中

如果 ,你使用的  setCheckedKeys  ,那么你的回显一定是不正确的

此时不得不用到另一个方法  setChecked   ,然后你会发现dom 刷新的时候   这个方法又失效了

原因是:dom树刷新了 ,使得树节点对应的treeId刷新了  

解决方法如下:在调用setChecked的方法外边包一层延时器(setTimeout)即可解决

<template><div class="app-container"><el-dialog title="权限管理" :visible.sync="menuRelationVis"><el-tree ref="menuTreeRef" :data="menuTreeData"node-key="id"show-checkbox:props="{label:'name',children:'children',isLeaf:'leaf'}"></el-tree><br><div style="display: flex;justify-content: center;"><el-button @click="menuRelationVis = false">取消</el-button><el-button type="primary" @click="submitMenuRelation">确认</el-button></div></el-dialog></div>
</template><script>import rolesApi from '@/api/roles.js'export default {data(){return{menuRelationVis:false,curRoleId:null,menuTreeData:[]}},methods:{async menuManage(id){this.menuRelationVis = truethis.curRoleId = idawait this.getMenuTreeData()await this.getHasMenuByRoleId(id)},getHasMenuByRoleId(id){rolesApi.queryRoleElement({roleId:id}).then(res=>{if(res.code === 0){console.log(this.$refs.menuTreeRef);res.data.forEach(val => {let a = setTimeout(()=>{this.$nextTick(() => {this.$refs.menuTreeRef.setChecked(val, true, false)clearTimeout(a)console.log('setChecked');})this.$forceUpdate()},100)})}else{this.$message.error(res.msg)}}).catch(err=>{this.$message.error('查询角色权限信息失败')})},submitMenuRelation(){let checkKeys = this.$refs.menuTreeRef.getCheckedKeys()let halfCheckKeys = this.$refs.menuTreeRef.getHalfCheckedKeys()rolesApi.relatedElement({roleId: this.curRoleId,elementIds: checkKeys.concat(halfCheckKeys)}).then(res=>{if(res.code === 0){this.menuRelationVis = falsethis.$message.success('修改角色权限成功')}else{this.$message.error(res.msg)}}).catch(err=>{this.$message.error('修改角色权限失败')})}}}
</script>

相关文章:

解决 el-tree setChecked 方法偶尔失效的方法

目前在大多数公司中&#xff0c;菜单的权限控制都是不可或缺的功能 在和后端配合做权限控制的时候不可避免的会用到 el-tree 然而这个组件本身带的坑不少 我们需要回显对应角色拥有的菜单&#xff0c;在不严格的模式下&#xff0c;父节点的选中会连带子节点的选中 如果 &a…...

重磅发布!RflySim Cloud 智能算法云仿真平台亮相,助力大规模集群算法高效训练

RflySim Cloud智能算法云仿真平台&#xff08;以下简称RflySim Cloud平台&#xff09;是由卓翼智能及飞思实验室为无人平台集群算法验证、大规模博弈对抗仿真、人工智能模型训练等前沿研究领域研发的平台。主要由环境仿真模块、物理效应计算模块、多智能体仿真模块、分布式网络…...

C++ 01.学习C++的意义-狄泰软件学院

一些历史 UNIX操作系统诞生之初是用汇编语言编写的随着UNIX系统的发展&#xff0c;汇编语言的开发效率成为瓶颈&#xff0c;所以需要一个新的语言替代汇编语言1971年通过对B语言改良&#xff0c;使其能直接产生机器代码&#xff0c;C语言诞生UNIX使用C语言重写&#xff0c;同时…...

微软正式发布开源应用平台 Radius平台

“ 10 月 18 日&#xff0c;微软 Azure 孵化团队正式发布开源应用平台 Radius&#xff0c;该平台将应用程序置于每个开发阶段的中心&#xff0c;重新定义应用程序的构建、管理与理解方式。” 简单的概括就是&#xff0c;它和Kubernetes不一样&#xff0c;Radius将应用程序放在每…...

排序算法(python)

排序算法 冒泡排序 一次比较相邻的两个数&#xff0c;每轮之后末尾的数字是确定的。 时间复杂度为 O ( n 2 ) O(n^2) O(n2)&#xff0c;空间复杂度为 O ( 1 ) O(1) O(1)&#xff0c;稳定。 def BUB(nums):for i in range(len(nums)):count 0for j in range(len(nums)-i-1)…...

一款简单漂亮的WPF UI - AduSkin

前言 经常会有同学会问&#xff0c;有没有好看简单的WPF UI库推荐的。今天就给大家推荐一款简单漂亮的WPF UI&#xff0c;融合多个开源框架组件&#xff1a;AduSkin。 WPF是什么&#xff1f; WPF 是一个强大的桌面应用程序框架&#xff0c;用于构建具有丰富用户界面的 Windo…...

Java面试题-Java核心基础-第七天(String)

目录 一、String、StringBuffer、StringBuilder的区别 二、String为什么是不可变的 三、字符串拼接用""还是用StringBuilder 四、String 中的equals和Object中的equals的区别 五、字符串常量池的作用了解吗&#xff1f; 六、String s1 new String("abc&qu…...

路飞项目多方式登录、手机号短信验证注册接口

登录注册页面分析 用户板块需要写的接口 用户名密码登录&#xff08;多方式登录&#xff09;获取手机验证码接口手机号验证码登录注册接口验证手机号是否存在接口 验证手机号是否存在 视图类 from rest_framework.viewsets import ViewSet from rest_framework.decorator…...

信息学奥赛一本通-编程启蒙3003:练2.1 春节快乐

3003&#xff1a;练2.1 春节快乐 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 10805 通过数: 7830 【题目描述】 一年一度的春节到啦&#xff01;试着把你的春节祝福表达在代码中吧。 【输入】 无 【输出】 输出一行"Happy Spring Festival!" 【输入…...

SparkStreaming入门

概述 实时/离线 实时&#xff1a;Spark是每个3秒或者5秒更新一下处理后的数据&#xff0c;这个是按照时间切分的伪实时。真正的实时是根据事件触发的数据计算&#xff0c;处理精度达到ms级别。离线&#xff1a;数据是落盘后再处理&#xff0c;一般处理的数据是昨天的数据&…...

设计模式:模板模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

简介&#xff1a; 模板模式&#xff0c;它是一种行为型设计模式&#xff0c;它定义了一个操作中的算法的框架&#xff0c;将一些步骤延迟到子类中实现&#xff0c;使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 通俗地说&#xff0c;模板模式就是将某一行…...

基于Java的图书商城管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…...

PHP 基础

PHP 基础 概述 在PHP 文件中&#xff0c;可以与HTML 和JavaScript 混编。 开始标记<?php 表示进入PHP 模式&#xff0c;结束标记?>&#xff0c;标识退出PHP 模式。 PHP 模式之外的内容会被作为字符输出到浏览器中。 PHP 在服务端执行&#xff0c;HTML 和 JS 在浏览…...

Java RestTemplate使用TLS1.0(关闭SSL验证)

1. 问题 使用RestTemplate调用Http API时&#xff0c;服务器是TLS1.0&#xff0c;但是客户端Java默认禁止TLS1.0&#xff0c;会报错&#xff1a;org.springframework.web.client.ResourceAccessException: I/O error on POST request for “https://10.255.200.114/health”: …...

【进阶C语言】C语言文件操作

1. 为什么使用文件 2. 什么是文件 3. 文件的打开和关闭 4. 文件的顺序读写 5. 文件的随机读写 6. 文本文件和二进制文件 7. 文件读取结束的判定 8. 文件缓冲区 一、文件与文件的意义 1.文件的意义 文件的意义&#xff0c;无非就是为什么要使用文件&#xff1f; &#xff08;1&…...

Django实现音乐网站 (21)

使用Python Django框架做一个音乐网站&#xff0c; 本篇音乐播放器功能完善及原有功能修改。 目录 播放列表修改 视图修改 删除、清空播放器 设置路由 视图处理 修改加载播放器脚本 模板修改 脚本设置 清空功能实现 删除列表音乐 播放列表无数据处理 视图修改 播放…...

LeetCode 面试题 10.11. 峰与谷

文章目录 一、题目二、C# 题解 一、题目 在一个整数数组中&#xff0c;“峰”是大于或等于相邻整数的元素&#xff0c;相应地&#xff0c;“谷”是小于或等于相邻整数的元素。例如&#xff0c;在数组{5, 8, 4, 2, 3, 4, 6}中&#xff0c;{8, 6}是峰&#xff0c; {5, 2}是谷。现…...

【专题】测试人员为什么需要学会做业务总结?

背景 如何回答以下这个问题的知识支撑&#xff1a;系统的测试重点在哪&#xff0c;难点是什么&#xff0c;怎么攻克&#xff0c;为什么要这样设计&#xff1f;项目交接效率&#xff1f; 同样是做业务测试&#xff0c;为什么有的人是A有的人只能C 二、框架 2.1 测试场景 重点…...

uni-app:实现当前时间的获取,并且根据当前时间判断所在时间段为早上,下午还是晚上

效果图 核心代码 获取当前时间 toString()方法将数字转换为字符串 padStart(2, 0)&#xff1a;padStart()方法用于在字符串头部填充指定的字符&#xff0c;使其达到指定的长度。该方法接受两个参数&#xff1a;第一个参数为期望得到的字符串长度&#xff0c;第二个参数为要填充…...

C# .Net6 指定WSDL, 生成Webservice,调用该接口服务

C# .Net6 指定WSDL, 调用该接口服务。 IDE&#xff1a; Microsoft Visual Studio Community 2022 (64 位)平台&#xff1a;.Net6协议&#xff1a;Soap协议 Xml格式 功能 需要开发一个前置机程序&#xff0c; 用于和硬件程序交互&#xff0c;已知条件是&#xff1a;嵌入式同事…...

mysql如何通过yum源快速安装_mysql官方yum安装教程

MySQL官方yum源安装的是8.0.x LTS版且默认未启用密码强度插件&#xff0c;导致mysql_secure_installation失败&#xff1b;需先添加官方repo、启用mysql80-community、禁用mysql57-community&#xff0c;再安装mysql-community-server&#xff0c;并注意SELinux权限及临时密码获…...

【限时限阅】C++ MCP网关ABI兼容性灾难实录:glibc 2.34升级引发的std::string_view越界访问,附GCC 12.3 ABI迁移检查清单

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;C 编写高吞吐量 MCP 网关 报错解决方法 在构建基于 C 的高吞吐量 MCP&#xff08;Model Control Protocol&#xff09;网关时&#xff0c;开发者常遭遇三类典型报错&#xff1a;连接池耗尽、异步回调未…...

3步拥有你的个人漫画图书馆:哔咔漫画下载器深度体验指南

3步拥有你的个人漫画图书馆&#xff1a;哔咔漫画下载器深度体验指南 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器&#xff0c;带图形界面 带收藏夹&#xff0c;已打包exe 下载速度飞快 项目地址: https://gitcode.com/g…...

全球牵引链市场深度洞察:4.2%%复合增速支撑

在工业发展与物流运输不断升级的大背景下&#xff0c;牵引链作为关键的基础部件&#xff0c;正迎来前所未有的发展机遇。QYResearch 权威调研显示&#xff0c;2025 年全球牵引链市场规模已达约 3.53 亿美元&#xff0c;这一数字犹如一颗璀璨的信号弹&#xff0c;预示着行业的蓬…...

如何零基础快速上手专业网络拓扑图绘制?终极免费开源工具指南

如何零基础快速上手专业网络拓扑图绘制&#xff1f;终极免费开源工具指南 【免费下载链接】easy-topo vuesvgelement-ui 快捷画出网络拓扑图 项目地址: https://gitcode.com/gh_mirrors/ea/easy-topo 你是否曾经为绘制复杂的网络拓扑图而头疼&#xff1f;专业工具太复杂…...

别再为抓包发愁!手把手教你用Charles配置HTTPS代理(附iOS/Android证书安装避坑指南)

移动端HTTPS抓包实战&#xff1a;Charles从零配置到高阶调试技巧 "为什么我的App请求在Charles里全是unknown&#xff1f;"——这是移动端开发者最常遇到的灵魂拷问。当你需要调试一个线上故障&#xff0c;或是分析某个API的响应数据时&#xff0c;却发现抓包工具里一…...

架构设计:基于状态机的AGV与巡检业务在机器人梯控系统中的解耦与差异实现

摘要&#xff1a; 在复杂的楼宇与仓储自动化架构中&#xff0c;AGV物料搬运与安防巡检机器人对电梯调度的诉求截然不同。前者要求严格的物理平层防抖与全局互斥锁&#xff0c;后者则更侧重于灵活的请求挂起与网络连贯性。本文将深入探讨这两类业务在梯控架构设计中的底层差异&a…...

从《辐射》游戏到精准放疗:聊聊DRR技术如何悄悄改变我们的医疗体验

从《辐射》游戏到精准放疗&#xff1a;聊聊DRR技术如何悄悄改变我们的医疗体验 还记得《辐射》系列游戏中那个标志性的Pip-Boy设备吗&#xff1f;主角只需抬起手腕&#xff0c;就能瞬间扫描周围环境并生成全息影像。这种科幻场景如今已在医疗领域以更精密的形式实现——DRR&…...

别再让el-input-number坑你了!手把手教你处理Vue+ElementUI表单中的‘空值’与‘零值’

深度解析VueElementUI表单中空值与零值的工程化处理方案 在VueElementUI构建的企业级表单应用中&#xff0c;数字输入框el-input-number的默认行为常常让开发者陷入业务逻辑的陷阱。当用户未填写时显示为0&#xff0c;这种看似合理的默认处理&#xff0c;却可能引发数据语义的…...

从光电效应实验到Python数据可视化:用Matplotlib复现普朗克常量测量全过程

从光电效应实验到Python数据可视化&#xff1a;用Matplotlib复现普朗克常量测量全过程 当金属板在特定频率的光照射下突然逸出电子时&#xff0c;这个被称为"光电效应"的现象不仅颠覆了经典物理学的认知&#xff0c;更为量子理论奠定了基础。如今&#xff0c;我们不仅…...