VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项)

2023-11-01

产品需求:

  1. 最后一级节点中列表节点为必选项
  2. 勾选列表节点之外的同级节点,列表节点自动勾选
  3. 取消列表节点勾选,其他同级节点也取消勾选(即列表节点为必选项)
  4. 列表之外的节点可单独操作(勾选或取消勾选)

实现步骤:

HTML中定义:

<el-tree
   ref="tree"
   node-key="code"
   show-checkbox
   class="el-tree"
   :indent="0"
   :data="routeList"
   :props="defaultProps"
   :highlight-current="true"
   :default-expand-all="true"
   :expand-on-click-node="false"
   :render-content="renderContent"
   :default-checked-keys="menuIds"
   @check="handleCheckChange" //本次需求需要事件
   @node-expand="handleExpand"
 />

methods中定义:

setRequiredNodeChecked(data) {
      for (let i = 0; i < data.length; i++) {
        if (data[i].type) {
          this.$refs.tree.setChecked(data[i].code, true)
        }
      }
    },
    setNodeUnChecked(data) {
      for (let i = 0; i < data.length; i++) {
        this.$refs.tree.setChecked(data[i].code, false)
      }
    },
    fetchCheckedNodeParent(data, findKey, callback) {
      for (let i = 0; i < data.length; i++) {
        const item = data[i]
        if (item.code && item.code === findKey) {
          callback(data)
          return true
        }
        if (item.childrens && item.childrens.length) {
          const result = this.fetchCheckedNodeParent(item.childrens, findKey, callback)
          if (result) {
            return true
          }
        }
      }
      return false
    },
    checkRequired(currentData, checkedKeys, halfCheckedNodes) {
      const currentKey = currentData.code
      const currentType = currentData.type
      if (checkedKeys.includes(currentKey)) {
        // 当前选中
        this.fetchCheckedNodeParent(halfCheckedNodes, currentKey, this.setRequiredNodeChecked)
      } else if (currentType) {
        // 取消选中,但当前项是必选项(如果取消勾选的是列表,那么其余同级节点全部取消勾选)
        this.fetchCheckedNodeParent(halfCheckedNodes, currentKey, this.setNodeUnChecked)
      }
    },
    // 点击节点
    handleCheckChange(data, node) {
      this.checkRequired(data, node.checkedKeys, node.halfCheckedNodes)
    }

看效果:
在这里插入图片描述
勾选列表之外的节点,列表节点自动勾选(如果取消列表勾选,其他同级节点全部自动取消勾选),单独操作列表节点可正常勾选反选,亲测有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项) 的相关文章

  • 如何在 Nuxt 中点击链接下载文件?

    我遇到了一个边缘情况问题 如果用户浏览几条 Nuxt 路线 单击网站 徽标 这是一个锚标记返回主页 然后单击浏览器本机后退按钮 最后单击一个应该的链接要打开 pdf 它会重定向到我的 404 页面 如果用户在页面加载时单击 pdf 链接 它
  • 如何以编程方式添加 Vue 3 组件?

    Vue 3 没有 Vue extend 方法 因此这里的示例不起作用 https css tricks com creating vue js component instances programmatically https css t
  • 如何隔离 Vuetify 全局样式

    我已经开始在旧的现有项目中将 Vue js 与 Vuetify 结合使用 所以我没有重写所有前端 我只是导入了Vue并替换了一些部分 然后我注意到一个非常意想不到的行为 Vuetify 具有常见类的全局样式 例如 title它不仅影响整个页
  • 将 Select2(多项选择)与 vue.js 结合使用

    我是 vue 新手 并遵循了他们的 自定义指令 http vuejs org examples select2 html http vuejs org examples select2 html 当仅选择一个项目时 此方法效果很好 但当您选
  • VueJS - 验证表单文件上传中的文件大小要求

    我正在使用 Bootstrap Vue 表单制作一个简单的表单 用户可以在其中上传文件 有没有办法验证使用 Vue 表单选择的文件的大小 我想阻止用户上传此类文件 我见过this https stackoverflow com questi
  • Vue 3 控制台中的 Proxy 是什么意思?

    我正在对数组进行洗牌 并在控制台中收到一条奇怪的消息 我的 JSON 文件如下所示 id 1 name Sushi image https images pexels com photos 1640777 pexels photo 1640
  • Laravel VueJS:构建多页面应用程序而不诉诸单页面应用程序(SPA)方法

    我正在尝试构建 Laravel 5 5 VueJs 多页面应用程序 我不想使用 SPA 单页应用程序 方法使其看起来像是一个多页面应用程序 URL处的注册页面就是这种情况 register 通过命令php artisan make auth
  • Vue.js 更改 {{ }} 标签

    我想改变 something by 在 Vue js 中 我怎样才能实现这一点 这可能吗 我在 AngularJS 中寻找的等效项 var app angular module app function interpolateProvide
  • 如何同时模拟Pinia和vue-i18n?

    我正在使用 Vue 3 的 Composition API 如下所示 store ts import ref Ref from vue import defineStore from pinia export const useStore
  • Nuxt.js 多个资源的根路由和根级 slugs

    我正在使用 Nuxt 构建一个电子商务前端 我希望为尽可能多的资源提供根级 slugs 最重要的是目录路径和产品 URL 一个明显的方法是使用 Nuxt 文件结构进行路由创建 com category men Tshirt com cate
  • 不使用Vue可以使用Vuex吗? (Vuex 服务器端?)

    Vuex 抱怨如果不调用 Vue use Vuex 就无法创建新的 store 实例 虽然这通常没问题 但我正在摆弄使用同一商店编写后端 前端的想法 有人知道答案吗 Thanks TL DR 你可以在 Node 中完美使用 Vuex 无需浏
  • vue如何检测页面是否刷新?

    我尝试这样 created window addEventListener beforeunload function event event returnValue Write something this router push 像这样
  • 在新窗口中打开 VueJS 组件

    我有一个只有一页的基本 VueJS 应用程序 它不是 SPA 而且我不使用 vue router 我想实现一个按钮 单击该按钮时会使用我的 Vue 组件之一的内容执行 window open 函数 查看来自的文档window open ht
  • 有没有V型斗篷的反面?

    根据VueJS 文档 https v2 vuejs org v2 api v cloak v cloak 指令可用于隐藏未编译的 Mustache 绑定 直到 Vue 实例准备就绪 换句话说 我可以隐藏一个div或类似的东西 当 vue 准
  • 从组件传递数据

    我对 Vue 相当陌生 我正在尝试将数据从组件传递到视图 我不确定我是否在使用props正确的 我有一个对话框 当我保存时 我想将数据插入数据库 我也想重复使用addCustomer function 这就是为什么我没有将该函数放置在组件中
  • Vue 监听 Vuex 提交吗?

    有没有一种方法可以监听 Vuex 提交 而不观察任何随提交而更改的属性 只是简单地找出是否发生了提交 我有一个 Filter 组件 想将其放入 NPM 包中 但我已经有一个用例 在该用例中 我希望设置一个 cookie 在选择过滤器时存储过
  • FullCalendar-vue + Typescript:属性“getApi”不存在

    我尝试将 FullCalendar vue 与 Typescript 结合使用 但在访问其 API 时遇到错误 我的日历设置如下
  • Vue.js 中计算属性和普通数据的区别

    我观察到 当一个正常的财产来自data 和从它派生的计算属性通过事件传递 前者保持其反应性 而后者失去它 我为其设置了以下测试用例 也作为 JSFiddle https jsfiddle net christophfriedrich b27
  • 使用 Vue 的多模式组件

    我在 Vue 中实现动态模式组件时遇到问题 A common approach I follow to display a set of data fetched from the db is I dump each of the rows
  • 如何在 Vue 2 中使用 Vue 路由器

    我正在学习 Vue 并开始于网页包模板 https github com vuejs templates webpack tree master template src 我想做的第一件事是添加对 Vue Router 的支持 但我现在已经

随机推荐

  • PyCharm中导入库的方法

    两种方法 1 搜索添加 列表中是已经存在的库 若需要添加库 点击 搜索 待库安装完成 即可使用 2 利用终端命令 输入代码 回车 即可完成 numpy库为例 我的是已经存在了
  • 【抽样技术】CH2 简单随机抽样

    目录 前言 一 定义 二 概述 1 总体 2 单元 3 抽样比 4 样本抽取原则 5 在抽样理论中的地位与作用 三 参数估计 1 参数表示 2 对总体特征的估计思路 3 对总体均值的估计 1 引理 2 对总体均值的估计 4 方差和协方差的估
  • ROS2学习笔记(三)从turtlesim学习ROS2主题

    从turtlesim学习ROS2主题 前言 学习ROS2的路 并不能通过学习ROS1代替 因为ROS2的 内核 不同于ROS1 必须认认真真从头开始重新学习 Ubuntu版本 20 04 ROS版本 Foxy 学习笔记回顾 ROS2学习笔记
  • Teamviewer检测为商业用途的解决方案

    Teamviewer检测为商业用途的解决方案 注意 Teamviewer远程链接需要两台计算机参与 需要在两台计算机上都安装Teamviewer软件 所以在链接中出现被检测到商业用途 并不知道到底是哪一台计算机上的电脑出现问题 所以如果按照
  • solr之lucene全文检索的基本原理

    一 总论 根据http lucene apache org java docs index html定义 Lucene是一个高效的 基于Java的全文检索库 所以在了解Lucene之前要费一番工夫了解一下全文检索 那么什么叫做全文检索呢 这
  • 从零开始学matplotlib画图(三): 堆积图

    堆积图常用于综合展示不同分类的指标趋势以及它们的总和的趋势 比如说 我们想看一下过去二十年来中国人口总量的变化趋势 同时 我们又想看一下男 女性人口各自的变化趋势 甚至我们还想看一下它们各自占比的变化趋势 这时 我们就可以用堆积图来更高效
  • 空类中都有哪些东西

    定义一个空类 里面什么内容都没有 class A 想想看 它的大小应该是多少 要计算一个类对象的大小 要知道这么几点 类大小是非静态数据成员的类型大小之和 若类中定义了虚函数 需要考虑到虚表指针也占用类对象的内存空间 32位机器下占用四字节
  • matlab如何显示神经网络的均方误差,matlab神经网络工具箱

    1 输入nftool 点击next 2 输入特征X 和目标值Y如下 注意按行 按列 3 设置训练集 验证集 测试机比例 一般默认为0 7 0 15 0 15 4 设置隐藏层个数 需要调的参数之一 5 选择优化算法 默认如图 点击train进
  • sklearn学习笔记

    sklearn简介 2007年 数据科学家大卫 库尔纳佩 David Cournapeau 等人发起了机器学习的开源项目 sklearn 至今已逾十载 到目前为止 它已成为一款非常成熟的知名机器学习框架 sklearn 是一款开源的 Pyt
  • qt 简易画板换线宽

    画板如图所示 想实现线宽变化后 画图工具的线宽可以变化 主窗口是editpicture 画板为paintwidget 算是两个类之间传递数据 想用spinbox的valuechange信号 在主窗口中添加connect area为paint
  • 全国二等计算机,喜报丨热烈祝贺赵思哲同学获得2020全国青少年信息学奥林匹克联赛全国二等奖...

    日前 由CCF主办的2020全国青少年信息学奥林匹克联赛 NOIP 顺利举行 共有来自全国31个省市自治区 含港澳 的选手参赛 经过激烈角逐 我校2020级6班赵思哲同学取得了全国二等奖的优异成绩 全国青少年信息学奥林匹克联赛 NOIP 是
  • Entity Framework Core-数据库优先

    数据库优先是EF Core会根据数据库自动创建Entity Context 因此首先你得先创建数据库 我们通过一个Company数据库做个演示 1 SQL Server中创建数据库 在Visual Studio中打开View gt SQL
  • 模拟电子技术动画-PN结(动画是转的)内容再修改

    1 空穴和电子 动画中空穴是红的 电子是蓝的 其实我一直对空穴这个概念很抵触 因为从这个动画上来看空穴是不动的 但讲PN结 三极管的时候都会把空穴当成运动的载流子 虽然似乎也不是很难理解 标题 2 PN结 标题
  • 强大的BaseRecyclerViewAdapterHelper使用

    介绍 相信大家RecyclerView应该不会陌生 大多数开发者应该都使用上它了 它也是google推荐替换ListView的控件 但是用过它的同学应该都知道它在某些方面并没有ListView使用起来方便 需要我们额外的编写代码 今天就给大
  • postgresql模糊查询(like和~)引用变量

    群里看到关于变量替换语句的问题 兴趣来了就研究一下 过滤包含pg sleep的查询 拼接terminate backend命令 postgres set querystr pg sleep postgres echo querystr pg
  • 刷脸会员结合能力在场景中也在做深度应用

    技术的更新与升级 刷脸的之后 需要号码输入 许多人仍然觉得麻烦 对于是否可能技术升级的问题 零售行业负责人解释道 支付宝刷脸支付整个支付过程可以在10秒内完成 是普通消费者可以接受的时间 在目前阶段可以满足大部分消费者的支付需求 在支付快速
  • Unity中设置物体的透明度

    Unity中设置物体的透明度 Unity中设置物体的透明度 不要再用Metial aa new Metial 因为不再支持 改用matial color Color red 来进行相关设置 在ANDROID端基本是不支持的 PC端目前好像还
  • ProGuard代码混淆器如何使用

    一 概述 1 ProGuard简介 背景 ProGuard 是一个免费的 Java 类文件的压缩 优化 混肴器 它删除没有用的类 字段 方法与属性 使字节码最大程度地优化 使用简短且无意义的名字来重命名类 字段和方法 使用场景 我们在工程应
  • Idea系列文章2-依赖包的引入

    Idea系列文章 IDEA 全称 IntelliJ IDEA 是java编程语言开发的集成环境 IntelliJ在业界被公认为最好的java开发工具 尤其在智能代码助手 代码自动提示 重构 JavaEE支持 各类版本工具 git svn等
  • VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项)

    产品需求 最后一级节点中列表节点为必选项 勾选列表节点之外的同级节点 列表节点自动勾选 取消列表节点勾选 其他同级节点也取消勾选 即列表节点为必选项 列表之外的节点可单独操作 勾选或取消勾选 实现步骤 HTML中定义