Element-Plus组件Tree树形控件时,传输失去父节点和回显父节点下的子节点全选问题解决

embedded/2024/9/23 12:28:40/

使用环境

Vue 3 in Vite

Element-Plus

JS语法(非TS)

问题描述:

在使用Element-Plus组件Tree树形控件时,会出现如下问题:

1、子节点未全选时,往后端传输的选中节点没有包含父节点。

如下图,往后端传选中节点时,无法传输父节点Level one 2的信息

2、从后端获取数据渲染时,如果获取的数据不是全选的,回显时父节点下的所有数据会自动全选。

如下图,当我只传输父节点下的部分节点时,我获取数据会显示父节点下的所有子节点会自动全选。

解决问题:

组件在页面中的显示代码

<template><div><el-tree ref="rabcTree" :data="menuListData" show-checkbox node-key="id" :props="defaultProps" /></div>
</template>
<script setup>
// 只展示关键代码
const rbacChecked = ref([])
const menuListData = ref([])
const defaultProps = ref({children: 'children',label: 'name'
})
</script>

1、子节点未全选时,往后端传输的选中节点没有包含父节点。解决办法如下:

function editRbac() {// 此处获取已选取的节点,不包含父节点let permissionids = rabcTree.value.getCheckedKeys(false)// rabcTree.value.getHalfCheckedKeys()获取的是父节点,通过concat将父节点拼接,传入后端const permissionParams = {// 获取全选中的idids: permissionids.concat(rabcTree.value.getHalfCheckedKeys()),// 将两个数组进行拼接id: roleid.value}authorizePut(permissionParams).then(response => {ElMessage({message: '修改成功!',type: 'success',duration: 5 * 1000})})
}

2、从后端获取数据渲染时,如果获取的数据不是全选的,回显时父节点下的所有数据会自动全选。解决办法如下:

// 处理子父节点关联问题,在请求数据方法获取后添加以下代码
nextTick(() => {rbacChecked.value.forEach((i, n) => {let node = rabcTree.value.getNode(i);// 如果是叶子节点就设置if (node.isLeaf) {rabcTree.value.setChecked(node, true, true);}else{rabcTree.value.setChecked(node, true);}});
});

原文地址:http://www.article.wang/portal/article/8


http://www.ppmy.cn/embedded/92838.html

相关文章

Python爬虫核心面试题2

网络爬虫 1. 什么是HTTP协议&#xff1f;它有哪些常见的请求方法&#xff1f;2. 在进行网络爬虫时&#xff0c;如何判断一个网站是否允许被爬取&#xff1f;3. 在使用HTTP请求时&#xff0c;如何处理重定向&#xff1f;4. 解释HTTP状态码200、404、500的含义。5. 什么是Session…

62_2文件上传

文件上传 ps图像上传&#xff1a;通过浏览器客户端将图片上传到服务器的磁盘上 原理 所谓的文件上传就是服务器端通过request对象获取输入流&#xff0c;将浏览器端上传的数据读取出来&#xff0c;保存到服务器端 客户端&#xff1a; 1.请求方式必须是 post 2.需要使用组件<…

MySQL——索引(二)创建索引(1)创建表的时候创建索引

要想使用索引提高数据表的访问速度&#xff0c;首先要创建一个常引。创建索引的方式有三种&#xff0c;具体如下。 创建表的时候可以直接创建索引&#xff0c;这种方式最简单、方便&#xff0c;其基本的语法格式如下所示: CREATE TABLE 表名 (字段名 数据类型 [完整性约束条件…

【SpringBoot】Web配置之 数据转换配置

// 2024.8.7 6:57 //Spring Boot支持对请求或者返回的数据类型进行转换&#xff0c;常用到的是统一对返回的日期数据自动格式化。 //配置如下&#xff1a; //定义时间格式转换器 Bean public MappingJackson2HttpMessageConverter jackson2HttpMessageConverter(){ MappingJac…

算法学习016 高精度加法运算 c++算法学习 中小学算法思维学习 比赛算法题解 信奥算法解析

目录 C高精度加法运算 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 六、推荐资料 C高精度加法运算 一、题目要求 1、编程实现 用高精度算法实现两个数&#xff1a;m和n&#xff0c;m和n的位数在1到100之间 2、输入…

信创安全 | 新一代内网安全方案—零信任沙盒

在当今数字化时代&#xff0c;访问安全和数据安全成为企业面临的重要挑战。传统的边界防御已经无法满足日益复杂的内网办公环境&#xff0c;层出不穷的攻击手段已经让市场单一的防御手段黔驴技穷。当企业面临越来越复杂的网络威胁和数据泄密风险时&#xff0c;更需要一种综合的…

Javascript常见设计模式

JS设计模式学习【待吸收】-CSDN博客 JavaScript 中的设计模式是用来解决常见问题的最佳实践方案。这些模式有助于创建可重用、易于理解和维护的代码。下面列出了一些常见的 JavaScript 设计模式及其代码示例。 1. 单例模式&#xff08;Singleton&#xff09; 单例模式确保一…

设计指南:UI网页设计的无限可能

ui网页设计是一个系统工程&#xff0c;从前期规划定位&#xff0c;到原型图设计确认&#xff0c;再到设计稿件交付&#xff0c;最后是程序员搭建网站。对于企业来说&#xff0c;网站是他们的在线门户。与线下门店的实际装修建设相比&#xff0c;网站设计更多的是对其行业咨询、…