Element Plus的el-tree-v2 组件实现仅叶子节点显示勾选框,并且只能单选

news/2024/10/23 21:54:04/

实现代码

<template><el-tree-v2:data="treeData":props="defaultProps"node-key="id"ref="treeRef"show-checkbox:check-strictly="true":expand-on-click-node="false"@node-click="handleNodeClick"@check="handleCheck"/>
</template><script setup>javascript">
import { ref } from 'vue';const treeData = ref([// ...树形数据
]);const defaultProps = {children: 'children',label: 'label',
};const treeRef = ref(null);const handleNodeClick = (nodeData, node) => {// 如果是叶子节点,则选中它if (node.isLeaf) {treeRef.value.setChecked(nodeData, true, true);}
};const handleCheck = (data, { checked }) => {// 处理单选逻辑if (checked) {// 清除其他选中的节点const checkedKeys = treeRef.value.getCheckedKeys();if (checkedKeys.length > 1) {treeRef.value.setCheckedKeys([data.id]);}}
};
</script><style scoped>
/* 样式穿透,隐藏非叶子节点的复选框 */
:deep(.el-tree-node) > .el-tree-node__content .el-checkbox .el-checkbox__inner {display: none;
}
:deep(.el-tree-node.is-leaf) > .el-tree-node__content .el-checkbox .el-checkbox__inner {display: inline-block;
}
</style>

实现思路

handleNodeClick 方法用于处理节点点击事件,如果点击的是叶子节点,则将其选中。
handleCheck 方法用于处理复选框的选中事件,确保只有一个叶子节点被选中。
使用 :check-strictly="true" 确保复选框的选择不会影响父子节点。
使用 :expand-on-click-node="false" 确保点击节点不会展开或折叠,这样点击叶子节点时不会触发展开操作。


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

相关文章

Docker容器间链路管理

Docker容器是一个轻量级的、可移植的软件打包技术&#xff0c;它允许开发者将应用程序及其依赖项打包到一个独立的容器中&#xff0c;然后发布到任何支持Docker的环境中运行。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口&#xff0c;容器性能开销极低。 可以将…

赋值 浅拷贝 深拷贝

赋值操作 赋值操作&#xff08;如 b a&#xff09;只是将变量 b 指向变量 a 当前指向的对象。这意味着 b 和 a 引用同一个对象。如果对象是可变的&#xff08;如列表、字典&#xff09;&#xff0c;对对象的修改会反映在所有引用该对象的变量上。 a [1, 2, 3] b a a[0] 9…

计算机毕业设计 | vue+springboot 在线花店后台管理系统(附源码)

1&#xff0c;绪论 1.1 项目背景 随着社会发展&#xff0c;网上购物已经成为我们日常生活的一部分。但是&#xff0c;至今为止大部分电商平台都是从人们日常生活出发&#xff0c;出售都是一些日常用品比如&#xff1a;食物、服装等等&#xff0c;并未发现一个专注于鲜花的电商…

Python GUI 编程:tkinter 初学者入门指南——复选框

在本文中&#xff0c;将介绍 tkinter Checkbox 复选框小部件以及如何有效地使用它。 复选框是一个允许选中和取消选中的小部件。复选框可以保存一个值&#xff0c;通常&#xff0c;当希望让用户在两个值之间进行选择时&#xff0c;可以使用复选框。 要创建复选框&#xff0c;…

RISC-V笔记——显式同步

1. 前言 RISC-V的RVWMO模型主要包含了preserved program order、load value axiom、atomicity axiom、progress axiom和I/O Ordering。今天主要记录下preserved program order(保留程序顺序)中的Explicit Synchronization(显示同步)。 2. 显示同步 显示同步指的是&#xff1a…

基于微信小程序的智能社区服务管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

Docker 安装Postgres和PostGIS,并制作镜像

1. 查找postgres和postgis现有的镜像和版本号 镜像搜索网站&#xff1a;https://docker.aityp.com/ 测试使用的是postgres:15.4 和 postgis:15-3.4 2、镜像拉取 docker pull postgres:15.4docker pull postgis/postgis:15-3.4镜像下载完成&#xff0c;docker images 查看如…

CIM+全场景应用,铸就智慧城市发展新篇

在数字化浪潮的推动下&#xff0c;智慧城市建设正成为全球城市发展的新趋势。而CIM&#xff08;城市信息模型&#xff09;作为智慧城市建设的核心&#xff0c;正以其强大的数据集成和分析能力&#xff0c;引领着城市发展的新篇章。今天&#xff0c;让我们一起探讨CIM全场景应用…