el-tree 树结构实现父子不关联(check-strictly) 且能全选、反选、半选

el-tree:实现父节点自动关联选中、子节点自动关联取消选中功能 利用element plus的el-tree控件,实现选中节点时,其各级父节点自动关联选中;取消选中该节点时,其各级子节点自动关联取消选中功能 阅读详情
AI摘要

这篇博客介绍了如何在Vue.js中处理Tree组件,既要实现父子节点不关联的勾选,又要保留全选、反选和半选功能。通过拉平树形数据并独立处理“全部”节点,利用setCheckedNodes方法动态更新选中状态,实现了这一目标。博主提供了详细的代码示例,包括模板、脚本部分,以及全选、反选、半选状态的判断逻辑。

需求: Tree 树形控件需要实现父子不关联勾选,但同时也要实现全选、反选、半选功能 由于按照官网设置check-strictly后,最顶级“全部”也属于父级导致选中全部但未实现全选等功能,又想父子不关联又想全选,那就需要手动写逻辑啦
效果:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

解决:单独把全部抽离出来,拉平树结构数据,根据选中长度同拉平后的数据长度进行对比实现全选、反选、半选
上代码:

<template>
  <div>
    <el-checkbox v-model="checkecd" :indeterminate="indeterminate" @change="checkedAll">
      全部
    </el-checkbox>
    <el-tree ref="tree" :data="treeData" show-checkbox node-key="id" check-strictly @check-change="checkChange">
    </el-tree>
  </div>
</template>

<script>
export default {
  data() {
    return {
      treeData: [
        {
          id: 1,
          label: '一级 1',
          children: [
            {
              id: 4,
              label: '二级 1-1',
              children: [
                {
                  id: 9,
                  label: '三级 1-1-1'
                },
                {
                  id: 10,
                  label: '三级 1-1-2'
                }
              ]
            }
          ]
        },
        {
          id: 2,
          label: '一级 2',
          children: [
            {
              id: 5,
              label: '二级 2-1'
            },
            {
              id: 6,
              label: '二级 2-2'
            }
          ]
        },
        {
          id: 3,
          label: '一级 3',
          children: [
            {
              id: 7,
              label: '二级 3-1'
            },
            {
              id: 8,
              label: '二级 3-2'
            }
          ]
        }
      ], // 树形数据
      levelData: [], // 拉平后的treeData
      checkecd: false,// 全选状态
      indeterminate: false // 半选状态
    }
  },
  created() {
    this.getLevelData()
  },
  methods: {
    // 获取拉平后的数据
    getLevelData() {
      let cloneData = JSON.parse(JSON.stringify(this.treeData))
      this.levelData = this.recursion(cloneData)
    },
    // 全选、反选
    checkedAll() {
      if (this.checkecd) {
        this.$refs.tree.setCheckedNodes(this.levelData)
      } else {
        this.$refs.tree.setCheckedNodes([])
      }
    },
    // 树结构勾选
    checkChange(item, isChecked) {
      // 获取勾选的数据
      let checkNode = this.$refs.tree.getCheckedKeys()
      // 如果勾选数量===拉平后的treeData的数量 那么相当于全选 反之则是反选
      // 如果小于数组数量则是半选
      if (checkNode.length === this.levelData.length) {
        this.checkecd = true
        this.indeterminate = false
      } else if (checkNode.length === 0) {
        this.checkecd = false
        this.indeterminate = false
      } else if (checkNode.length < this.levelData.length) {
        this.indeterminate = true
      }
    },
    // 递归调用
    recursion(arr) {
      return [].concat(...arr.map(item => {
        if (item.children) {
          let arr = [].concat(item, ...this.recursion(item.children))
          delete item.children
          return arr
        }
        return [].concat(item)
      }
      ))
    }
  }
}
</script>
Vue3 + Element-plus Tree 组件的 @check 事件使用方案 请根据你的实际需求进行逻辑处理。这只是一个简单的示例,你可以根据实际情况来设计你的 Tree 组件和处理方法。在这个示例中,我们使用了 Vue 3 的 Composition API,通过。属性来设置节点的唯一标识(这里使用了一个函数返回节点的 id)。在 Vue 3 中使用 ElementUI 的 Tree 组件的。事件来处理节点选中状态的变化。以下是在 Vue 3 中如何使用。与 Vue 2 不同的是,Vue 3 使用。与 Vue 2 相似,我们在。函数来设置组件的逻辑。方法来处理选中状态的变化。 阅读详情

相关推荐

el-tree父级半选状态控制:手动接管父子联动

树形控件是后台管理系统中实现权限分配、组织架构展示的常用组件,而节点选中状态的正确性直接影响数据提交与回显的准确性。在使用el-tree时,默认的父子节点联动机制会让父级在子级部分选中时呈现半选状态,但该状态不进入选中结果,导致视图与数据不一致。通过配置check-strictly关闭默认联动,开发人员可以自定义父级节点的选中与半选规则,实现“子级全部选中父级才全选,子级部分选中父级半选”的精确控制。这一方案广泛适用于权限树、组织架构树等复杂业务场景,可有效解决回显脏数据、提交遗漏等问题,提升前后端数据一致

weixin_27729671的博客 85

vue el-tree树形结构的check-strictly属性

Tree 树形控件

且听风吟的博客 2万+

树结构 复选框 多选 全选功能

树结构 复选框 多选 全选功能

自定义el-tree复选框选中状态vue elementUI

父节点展开状态,实现选中父节点只选中其第一级子节点,并且要把父节点从所有已经选中的节点中删除,即只保留子节点。父节点折叠状态,实现只选中父节点,不选中其子节点。

00年女程序员分享自己的学习笔记 8462

【实战技巧】matplotlib中文标签显示问题的3种高效解决方案

本文详细介绍了解决matplotlib中文标签显示问题的3种高效方法,包括修改字体设置、临时指定字体和修改后端配置。针对不同操作系统和环境提供了实用技巧,帮助开发者快速解决中文显示为方框的常见问题,提升数据可视化效果。

weixin_30855099的博客 170

学习十八-UJA107xA简介及移植-0

目录 1、UJA107xA系列手册 1、介绍 2.2.1 BAT引脚功能 2.4.1 V1、V2稳压器 2.5.1 CAN收发器 3.1 Startup Operation 3.2 Normal Operation 5.1 Attached Files 5.2 NXP UJA107xA Example Software 6、main() 1、UJA107xA系列手册 看完手册关于使用还是没有头绪的,只是想SPI发送指令将V2驱动起来,进而驱动起来CAN收...

m0_56344230的博客 1703

element ui的el-tree多选树(复选框)父子节点关联不关联的问题

属性check-strictly 官方文档提供属性check-strictly,在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 false。 而此属性的意思是: 默认false,父子关联。有如下现象及问题: 1、当你通过函数设置勾选节点的时候,只要父节点被勾选子节点必会勾选上,即便设置勾选的list中无此子节点。 2、当你点击勾选复选框时候,若点击父节点,其下子节点全部统一跟随父...

Beam 3万+

将雷达连接到树莓派的串口

dev/ttyAMA0 是树莓派的主要 UART(用于 GPIO 引脚 8 (TXD) 和 10 (RXD))。通常,树莓派使用 GPIO 引脚 8 (TXD) 和 10 (RXD) 进行串口通信。树莓派上通常有两个串口:/dev/ttyS0 和 /dev/ttyAMA0。你需要确认雷达的 TX 和 RX 引脚,并与树莓派的对应引脚连接。VCC(电源)连接到树莓派的 3.3V 或 5V(根据雷达的要求)MR(Receive)连接到树莓派的 GPIO 8 (TXD)GND(地)连接到树莓派的 GND。

qq_45943628的博客 1465

el-tree父子不互相关联时,手动实现全选、反选、子级全选、清空功能

当属性check-strictly为true时,父子节点不互相关联,如果需要全部选中或选择某一节点下的全部节点就必须手动选择每个节点,十分麻烦。可以通过ref操做el-tree的getCheckedKeys、getCheckedNodes、setCheckedKeys方法手动快速节点选择。本文由博客一文多发平台。

MoYu的博客 1510

逆变器专题(3)-锁相环-PLL

锁相环作为并网逆变器的第一道门户,其锁相的精度将直接影响逆变器是否并网成功,若锁相精度较差,则会直接导致系统的功率因数下降,产生无功等等。在有关文献中指出,提高PLL带宽可以准确且快速进行锁相,而当电网电压含有谐波时,可适当降低带宽抵制谐波的干扰。成为变化量,而如果两者旋转速度达到一致时,所在的交轴分量。ki很大,即带宽很大时,稳定裕度不够,锁相环锁不住。为交流量,当频率锁定而相位没有锁定时,即。,即控制环前馈,可实现将锁相速度的加快。控为0,则可实现系统完美锁相。mod,取余,可减少存储空间。

cyc19980105的博客 6181

STM32解码EM4100的曼彻斯特编码(库函数版本)

前言: 前些日子老师布置一个任务叫我们焊接一个RFID读卡器,其中刚好我们手上也有一个STM32F103RBT6开发板,老师于是布置任务叫我们用STM32完成对EM4100进行读卡操作 EM4100简介: 中 文 名:EM4100卡 存储容量:64bit 工作频率:125KHZ 读写距离:2-15cm 产品名称:EM4100/EM4102卡 芯片类型:μEM瑞士微电 EM4100/EM4102 擦写寿命:读不限,只读 外形尺寸:ISO标准卡/厚卡 封装材料:PVC、ABS 典型应用:身份识别、考勤系统、门禁

Gancenty 8598

element ui的el-tree多选树(复选框)父子节点关联不关联的问题,选中当前节点,他的子节点和父节点是否被选中,非常详细

element ui的el-tree多选树(复选框)父子节点关联不关联的问题,选中当前节点,他的子节点和父节点是否被选中,非常详细 属性check-strictly 官方文档提供属性check-strictly,在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 false。 而此属性的意思是: **默认false,父子关联。**有如下现象及问题: 1、当你通过函数设置勾选节点的时候,只要父节点被勾选子节点必会勾选上,即便设置勾选的list中无此子节点。 2、当你点击勾选复选框时候,若点击父节

sunrj_niu的博客 1万+

120、ISP 驱动架构解析:从 V4L2 请求到 ISP 硬件的配置下发流程

本文以实际案例解析ISP驱动架构的V4L2到硬件配置下发流程。作者通过一个因内存共享导致画面闪烁的bug案例,详细剖析了用户空间参数通过V4L2结构体传递、驱动层拆包与硬件寄存器映射、时序同步机制等关键环节。特别强调深拷贝、dirty flag增量更新、shadow register等实现要点,并给出多路并发隔离、寄存器写入失败等典型问题的排查方法。文章建议开发者深入理解参数到寄存器的转换过程,推荐通过debugfs实时监控寄存器状态,避免过度依赖自动调试工具。全文以实践为导向,对ISP驱动开发具有直接指导

sundong_81的博客 159

el-tree 数据回显父节点和子节点都会被选中 check-strictly关联不关联

ElementUI tree组件 动态渲染编辑时 选择父级时会全选所有的子级(el-tree数据回显父节点和子节点都会被选中)具体上代码效果代码js代码特此记录 具体上代码 效果 代码 <el-form-item label="菜单权限"> <el-tree :data="menuOptions" show-checkbox default-expand-all ref="

qq_37155370的博客 2916

8.时间序列预测

目标:使用历史数据预测未来的销售额。通过以上步骤,可以在Excel中有效进行预测分析,帮助做出更准确的决策通过考虑不同时期数据的影响,可以显著提高预测的准确性。结合多种方法和模型,可以灵活应对复杂的市场环境和变化。

学习,输出==》再学习再输出 891

【雷达成像】基于matlab SAR雷达成像仿真【含Matlab源码 3750期】

SAR雷达成像仿真 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 1083

element-ui el-tree 获取当前选中数据(含半选中的父节点)之进阶版

问题描述:官方提供了获取半选节点的API,但是回显会有一些没有选中的节点都勾选上了,那怎么办呢? 重新回到设置 check-strictly 为 true 时,父子级不互相关联,挨个点击用户体验不好的问题,同时也避免了出现半选的情况。 我们简化用户的操作: 1、当点击勾选复选框时候,若状态为 选中 1.1、其所有 父节点 (父节点、父节点的父节点以此类推)全部统一跟随当前节点变化为 选中 ...

qq_36437172的博客 3万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

element-ui el-tree 子节点全不选时,设置父节点半选状态

el-tree要点 详细请看官方文档,这里只简要介绍涉及到的部分要点 check-strictly 是否严格父子不互相关联 true: 父子不级联即选中节点仅对当前节点操作 false:父子级联(默认)即选中父节点其子节点全部选中,选中部分子节点父节点半选中,选中全部子节点父节点完全选中 getCheckedKeys() 获取选中的node的key值 (完全选中状态) setCheckedKeys() 对应getCheckedKeys() getHalfCheckedKeys() 获取半选中的node

渣渣的博客 9303

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

El-Tree 的“坑”与“药”:我是如何修复那个“幽灵勾选”Bug的

摘要: 本文分享了Element Plus的el-tree组件在权限管理场景下遇到的“幽灵勾选”Bug排查过程。由于默认的check-strictly="false"父子节点关联逻辑,当部分子节点被勾选时,父节点会被自动勾选并连带选中所有子节点,导致权限数据异常。解决方案是通过设置check-strictly="true"解除父子关联,同时需在提交时合并半选父节点ID。文章对比了两种模式的适用场景,强调精确权限控制需启用严格模式,并提醒注意半选节点的处理逻辑。(149

小丁的博客 1081

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

解决element-ui u-tree树形组件父节点半勾选回显数据问题

问题描述:因为e-tree组件默认关闭了check-strictly就严格遵循了父子关联关系,只要父节点勾选上了,全部子节点默认会勾选上。如果接口返回的勾选节点id包括了父节点,其子节点都是会被e-tree默认勾上参考,大致的思路就是动态控制check-strictly,在回显之前开启父子节点互不关联,然后在节点获取到赋值id后再关闭,这样就能实现了 关键代码如下具体文章可移步但是这里也会有bug 就是父节点不会出现半勾选状态。这里就引出第二个。

imsopoor的博客 2950

ElementUI Tree组件严格的遵循父子不互相关联的反显

check-strictly 在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 false,当我们设置它为true时,父子级关系彻底不再关联。 那么涉及到的就是一个需求,如果用户勾选了某个层级后,它的子集我们不需要勾选,但是它的父级我们需要根据情况判断是否是半勾选或者是勾选状态。 <el-tree class="ztree" :expand-on-click-node="showChild" check-strictly v-loading="loading"

n602655099的专栏 1274

el-select和el-tree结合使用-树形结构多选框

el-select和el-tree结合使用-树形结构多选框

s_9527_s的博客 1万+

element树组件父子关联

el-tree组件父子关联问题 el-tree选了父节点后,子节点均会选中,子节点都取消之后,父节点也取消,导致不选择子节点就无法选择父节点 解决:取消父子关联关系 :check-strictly="true" 这样父、子节点完全不关联,勾选毫无关系。 但是业务需求是,要勾选子节点必须先勾选父节点 于是写了@check方法,在勾选子节点时,自动勾选父节点 <el-tree :data="menuOptions" show-checkbox ref="menu" node-key="

新前端小白的博客 1899

多选el-tree回显时只选中了父级下面其中一个子菜单,但是导致这个父级下面子菜单全选

这篇主要是接上篇的遗留问题。 在你将[2,3]这个数组提交给后端,那必然牵扯到回显的问题,回显的时候,使用了: this.$nextTick(() => { var checkedId = res.permissionIds // 后端返回res.permissionIds = [2,3] this.$refs.menuTree.setCheckedKeys(checkedId) // 设置回显 }) 然后你就发现了,由于后端返回的数组里有父级id,所以根据el-tre

huanhuan03的博客 894

【vue】el-tree某一分支实现单选,其他分支可以多选

【vue】el-tree某一分支实现单选,其他分支可以多选 这个我真的不想多说啥,心累了。花了好久的时间才倒腾出来。心塞塞。 直接上代码,也算造福广大被el-tree折磨。欲哭无泪。 我主要是针对这个方法。 @check-change=“handleCheckChange” handleCheckChange(CChangeData, selfChecked, leafChecked) { this.basemapData = []; this.treeData[0].child

易小花的博客 1104

element-ui el-tree选择子节点时同时选择并提交父节点逻辑问题

el-tree组件在获取选择的节点时,默认的逻辑是,选中父节点时所有的子节点会被选中(checked),但是当该节点下不是选中所有子节点的时候,主节点不会被选中,而是处于一种半选中状态,提交时通过 getCheckedKeys() 方法也不会提交父节点,因为半选中状态下 checked 属性是 false 的。 项目中通常会有这样的需求 解决办法 通常如果只是为了提交数据,我们可以使用getHalfCheckedKeys()+getCheckedKeys()来获取需要的数据 const d.

z00001993的博客 6680
上一篇: Vue2.0+element-ui实现表格的增删查改
下一篇: el-table多选表格type=“selection“获取当前行数据给多选框增加插槽逻辑
果粒橙er
博客等级 码龄7年 733粉丝 53原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值