• element-ui的el-tree组件实现单选功能及选择子节点,获取所有父级节点或选中所有父级节点


    el-tree是不支持单选的,可以通过选中事件进行处理,实现单选

    实现单选

    1. <el-tree
    2. ref="tree"
    3. :data="treeData"
    4. :props="defaultProps"
    5. :show-checkbox //显示选择框
    6. :check-on-click-node="true" //点击节点的时候选中节点
    7. :check-strictly="true" //在显示复选框的情况下严格的遵循父子不互相关联的做法
    8. node-key="id"
    9. @check="treeCheck" //选中后事件在此事件中实现单选
    10. >
    11. el-tree>
    1. methods: {
    2. treeCheck(data, list) {
    3. //data 该节点所对应的对象、list 树目前的选中状态对象
    4. //选中事件在选中后执行,当lis中有两个选中时,使用setCheckedKeys方法,选中一个节点
    5. //单选实现
    6. if (list.checkedKeys.length > 0) {
    7. //单选实现
    8. this.$refs.tree.setCheckedKeys([data.id])
    9. } else {
    10. //取消当前选中节点
    11. this.$refs.tree.setCheckedKeys([])
    12. }
    13. }
    14. }

    获取选中子节点的所有父级节点

    1. methods: {
    2. treeCheck(data, list) {
    3. let thisNode = this.$refs.tree.getNode(data.id),
    4. keys = [data] // 获取已勾选节点的key值
    5. if (thisNode.checked) {
    6. // 当前节点若被选中
    7. for (let i = thisNode.level; i > 1; i--) {
    8. // 当前子节点选中,取消勾选父节点
    9. this.$refs.tree.setChecked(thisNode.parent, false)
    10. // 判断是否有父级节点
    11. if (!thisNode.parent.checked) {
    12. // 父级节点未被选中,则将父节点替换成当前节点,往上继续查询,并将此节点key存入keys数组
    13. thisNode = thisNode.parent
    14. keys.unshift(thisNode.data)
    15. }
    16. }
    17. }
    18. console.log(keys, 'keys++++++++++++++)
    19. }
    20. }

    点击子节点选中其所有父级节点

    1. methods: {
    2. // 选中子节点,默认选中父节点
    3. checkeTree(data, list) {
    4. let thisNode = this.$refs.tree.getNode(data.id), // 获取当前节点
    5. keys = this.$refs.tree.getCheckedKeys() // 获取已勾选节点的key值
    6. if (thisNode.checked) { // 当前节点若被选中
    7. for (let i = thisNode.level; i > 1; i--) {
    8. // 当前子节点选中,取消勾选父节点
    9. this.$refs.tree.setChecked(thisNode.parent, false)
    10. // 判断是否有父级节点
    11. if (!thisNode.parent.checked) { // 父级节点未被选中,则将父节点替换成当前节点,往上继续查询,并将此节点key存入keys数组
    12. thisNode = thisNode.parent
    13. keys.push(thisNode.data.id)
    14. }
    15. }
    16. }
    17. this.$refs.tree.setCheckedKeys(keys) // 将所有keys数组的节点全选中
    18. }
    19. }

    到此结束。

  • 相关阅读:
    文件批量重命名 Renamer 最新中文 for mac
    设备巡检的痛点和巡检方案
    Qt基于paintEvent自定义CharView
    怎么找通达信行情接口c++源码?
    28 WEB漏洞-XSS跨站之WAF绕过及安全修复
    MacOs 围炉夜话
    TM 学习记录--论文阅读1
    【速看】手把手一点点带你看明白线程和线程池的状态以及状态之间是如何转换
    基于对数谱图的深度学习心音分类
    MongoDB内部的存储原理
  • 原文地址:https://blog.csdn.net/weixin_43743175/article/details/127759401