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

devtools/2024/10/25 1:31:51/

实现代码

<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/devtools/128560.html

相关文章

Python | Leetcode Python题解之第497题非重叠矩形中的随机点

题目&#xff1a; 题解&#xff1a; class Solution:def __init__(self, rects: List[List[int]]):self.rects rectsself.sum [0]for a, b, x, y in rects:self.sum.append(self.sum[-1] (x - a 1) * (y - b 1))def pick(self) -> List[int]:k randrange(self.sum[-1…

【开发语言】c++的发展前景

C作为一种历史悠久且功能强大的编程语言&#xff0c;在软件开发领域一直保持着其独特的地位和广泛的应用前景。尽管近年来出现了许多新的编程语言和技术趋势&#xff0c;但C由于其高性能、低层访问能力以及广泛的生态系统&#xff0c;在多个领域依然具有不可替代的优势。以下是…

1024,程序员节日快乐

今天是10月24日&#xff0c;我们迎来了程序员的节日。 “1024这个数字对程序员而言&#xff0c;究竟有何特殊含义&#xff1f;”原因在于2⁰ 1024&#xff0c;而计算机硬件的计量单位正是基于1024的幂次递进。 例如&#xff0c;1GB1024MB&#xff0c;1MB1024KB。 因此&#…

解释区块链技术的应用场景和优势。

区块链技术是一种分布式数据库技术&#xff0c;其主要特点是去中心化、安全性高、可追溯、不可篡改等。这使得区块链在许多领域具有广泛的应用场景和优势。 首先&#xff0c;区块链技术可以应用于金融领域。例如&#xff0c;可以用于加密货币的发行和交易&#xff0c;使得交易…

SpringBoot技术的车辆管理流程自动化

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

从0开始深度学习(20)——延后初始化和自定义层

一般情况下&#xff0c;模型参数在被创建时就被立即初始化了&#xff0c;但如果使用了延后初始化技术&#xff0c;就能在首次传入数据后&#xff0c;再初始化参数&#xff0c;旨在输入维度未知的情况下&#xff0c;预定义灵活的模型&#xff0c;动态推断各个层的参数大小。 有时…

从0开始学python-day14-pandas1

一、基础 1、概述 Pandas 是一个开源的第三方 Python 库&#xff0c;从 Numpy 和 Matplotlib 的基础上构建而来 Pandas 名字衍生自术语 "panel data"&#xff08;面板数据&#xff09;和 "Python data analysis"&#xff08;Python 数据分析&#xff09;…

perl批量改文件后缀

perl批量改文件后缀 如题&#xff0c;perl批量改文件后缀&#xff0c;将已有的统一格式的文件后缀&#xff0c;修改为新的统一的文件后缀。 #!/bin/perl use 5.010;print "Please input file suffix which U want to rename!\n"; chomp (my $suffix_old <>)…