el-tree转换为表格样式的记录2

这篇具有很好参考价值的文章主要介绍了el-tree转换为表格样式的记录2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上一篇文章记录的是自己将树状数据转换为表格形式。但是出现了一个小bug,点击子节点时候会选中父节点,这个是正常需求没问题。但是我点击父节点时候取消所有子节点,父节点 选择也会失去,这是我不想要执行的。例如一个页面里面有主页,各种小组件,但是我只想看一个主页,小组件都不要了。而不是我如果想要看主页必须最少选择一个组件。

代码:

el-tree的组件方法

check-change 节点选中状态发生变化时的回调 共三个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、节点本身是否被选中、节点的子树中是否有被选中的节点
check 当复选框被点击的时候触发 共两个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、树目前的选中状态对象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性
<el-tree
            show-checkbox
            :data="allMenu"
            :default-expand-all="true"
            node-key="permissionId"
            ref="menuTree"
            check-strictly
            highlight-current
            :props="xxxxx"
            empty-text="暂未匹配到信息"
            @check="handleCheck"
            @check-change="handleCheckChange"
          >
          </el-tree>

一、递归调用获取所有的节点ID

setChecked 通过 key / data 设置某个节点的勾选状态,使用此方法必须设置 node-key 属性 (key/data, checked, deep) 接收三个参数,1. 勾选节点的 key 或者 data 2. boolean 类型,节点是否选中 3. boolean 类型,是否设置子节点 ,默认为 false

这里为什么不使用带S的。肯定是这个方法有问题。

setCheckedKeys 通过 keys 设置目前勾选的节点,使用此方法必须设置 node-key 属性

(keys, leafOnly) 接收两个参数,1. 勾选节点的 key 的数组 2. boolean 类型的参数,若为 true 则仅设置叶子节点的选中状态,默认值为 false

selectChildren(data) {
  if (data && data.sonPermissionList) {
    // 如果数据存在且有子权限列表
    data.sonPermissionList.map((item) => {
      // 将子节点的权限设置为勾选状态
      this.$refs.menuTree.setChecked(item.permissionId, true);
      if (data.sonPermissionList) {
        // 如果子权限列表存在,则递归调用 selectChildren 方法
        this.selectChildren(item);
      }
    });
  }
}

二,点击复选框事件

在点击时候能获取到当前的树目前的选中状态对象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性文章来源地址https://www.toymoban.com/news/detail-603688.html

handleCheck(data, { checkedKeys }) {
  // 第二个参数使用解构赋值获取选中状态的对象 checkedKeys
  // 使用 includes 方法判断当前节点的权限ID是否包含在 checkedKeys 中。如果包含,则调用 selectChildren 方法。
  if (checkedKeys.includes(data.permissionId)) {
    this.selectChildren(data);
  }
},

三、在点击复选框时候 进行父子节点的处理

handleCheckChange(data, checked, indeterminate) {
  if (checked === false) {
    if (data.sonPermissionList) {
      // 如果当前节点被取消勾选
      data.sonPermissionList.map((item) => {
        // 将子节点的权限设置为取消勾选状态
        this.$refs.menuTree.setChecked(item.permissionId, false);
      });
    }
  } else {
    if (data.pid !== null) {
      // 如果当前节点被勾选,并且有父节点
      this.$refs.menuTree.setChecked(data.pid, true);
    }
  }

  // 获取勾选状态的节点数组
  var check = this.$refs.menuTree.getCheckedNodes();
  // 提取节点数组中的权限ID,并去重
  var idList = check.map((item) => {
    this.permissionIdList = [];
    return item.permissionId;
  });
  this.permissionIdList.push(...idList);
  // 对去重后的权限ID列表进行过滤
  this.permissionIdList = this.permissionIdList.filter((item, index) => {
    return this.permissionIdList.indexOf(item, 0) === index;
  });
}

到了这里,关于el-tree转换为表格样式的记录2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • el-tree基础渲染

    el-tree 每个节点左右布局 鼠标经过接电视,左边文字变色,右边不变

    2024年04月17日
    浏览(35)
  • el-tree 懒加载树

    el-tree 懒加载树 添加自定义图标 指定叶子节点 懒加载

    2024年02月12日
    浏览(30)
  • el-tree 实现节点高亮

    要实现显示  el-tree  节点高亮,可以使用  el-tree  提供的  highlight-current  属性和  current-node-key  属性,以及  el-tree-node  组件提供的  highlight  属性。 首先,在  el-tree  组件中设置  highlight-current  属性为  true ,表示启用高亮当前节点的功能: 然后,在  el-tree  组件中

    2024年02月08日
    浏览(34)
  • Vue单页面实现el-tree el-breadcrumb功能、el-tree右键点击树节点展示菜单功能、树节点编辑节点字段名称功能

    (1) 点击el-tree节点 使用el-breadcrumb展示选中树节点及父项数据         重点: handleNodeClick方法、getTreeNode方法 (2) 选择el-breadcrumb-item设置el-tree节点选中             必须设置属性: current-node-key=\\\"currentNodeKey\\\"  、 node-key=\\\"id\\\"           重点: 设置树节点渲染 this.$refs.tree.set

    2024年02月16日
    浏览(35)
  • el-tree 树全部展开或收起

    绑定属性expanded,树自带方法this.$refs.tree.store.root.expanded,在mounted方法中给树方法赋值expandAll = false,具体代码实现详情如下: html代码: js代码:

    2024年02月17日
    浏览(31)
  • el-tree组件的锚点链接

    el-tree部分: 组件内部部分: js部分:   这样的话点击el-tree的时候,所绑定的div就自动移动到顶部了 scrollIntoView({ behavior: \\\"smooth\\\" });

    2024年02月10日
    浏览(18)
  • 【el-tree】树形结构拖拽,修改分组

    背景: 项目中有个左侧菜单,并且各级菜单中的元素是可以拖拽到别的菜单中去,也就是树形结构拖拽修改分组,下面我介绍我项目中使用el-tree进行拖拽分组的方式. 效果: 拖拽到某个节点的前后 首先我们使用的是饿了么组件中的[el-tree]组件,他本身是自带拖拽功能的,只需要加上一

    2024年02月12日
    浏览(71)
  • el-tree中展示项换行展示

    本质上就是在vue代码中对el-tree的默认样式进行了修改,这是修改样式的代码。如果想了解详细的,往后看就行了 这里使用的是Vite(Home | Vite中文网 (vitejs.cn)) + Vue3 + Ts建立的项目,使用了element plus(设计 | Element Plus (element-plus.org))这个组件库。 package.json中对应的版本信息如

    2024年02月05日
    浏览(28)
  • 在el-tree懒加载中进行局部刷新

    在进行懒加载的树组件中,操作子节点新增、修改以及删除操作时,需要对树组件进行局部刷新:

    2024年02月10日
    浏览(27)
  • 【el-tree】树形组件图标的自定义

    饿了么树形组件的图标自定义 默认样式:  可以看到el-tree组件左侧自带展开与收起图标,咱们可以把它 隐藏 :: 我的全部代码 其中自定义左侧图标的方法:  我的每条数据都自带icon属性,你没有的话也可以在数据拿到之后手动遍历添加一条icon属性进去,然后再el-tree中使用: 如果需

    2024年02月11日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包