vue-treeselect及el-tree点击节点获取上级节点的数据方式

 更新时间:2023年07月19日 15:25:37   作者:花椒和蕊  
这篇文章主要介绍了vue-treeselect及el-tree点击节点获取上级节点的数据方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue-treeselect及el-tree点击节点获取上级节点的数据

el-tree,单击和右击都有一个参数,即节点对应的Node

在这里插入图片描述

打印这个Node,如下:

    @node-contextmenu="rightClick"
    // 节点右击事件 */
    rightClick(MouseEvent, object, Node, element) {
      console.log(Node, "Node"); 
    },

在这里插入图片描述

展开parent

在这里插入图片描述

这个parent就是父节点,父节点中还包含了它自己的父节点,如果无父节点,返回null

el-tree获取父节点还是挺简单的,树组件内部已经返给你了,直接获取就行

vue-treeselect获取父节点

文档中未找到直接获取的方法,我这里说一下自己实现的方式

 @select="(node) => treeHandleSelect(node)"
  treeHandleSelect(node, e) {  
      // 获取节点上一节点
      //this.expendTree树数据源,node.pid当前节点的父id,this.dealPartytree处理数据的方法
      const obj = this.dealPartytree(this.expendTree, node.pid);
      //obj就是处理完后返的父节点,然后直接拿自己需要的东西即可
      this.partymember.branch = obj.name;
      this.partymember.branchId = obj.id;
    },

把树数据源,节点的父id传进来

    // 获取节点上一节点
    dealPartytree(arr, id) {
      let obj = {};
      const dep = (data, nodeId) => {
      //循环树数据源,用当前项的id和父id对比,相同就赋值,不相同就递归,相当于遍历了整棵树
        for (let v = 0; v < data.length; v++) {
          if (data[v].id === nodeId) {
            obj = data[v];
          } else if (data[v].children) {
            dep(data[v].children, nodeId);
          }
        }
        return obj;
      };
      obj = dep(arr, id);
      return obj;
    },

//用当前项的id和父id对比是因为,当前项的父id即父节点的id,通过父节点的id进行关联

在这里插入图片描述

vue-treeselect无法点击问题(点击无法出现拉下菜单)

问题原因

样式冲突(使用了elementui)

场景

在el-form标签中,如果使用了标签,并且父标签不是的话,就会出现无法点击的问题。(没有严格按elementui的标签嵌套)

可正常点击:

<el-row>
   <el-col :span="24"  v-if="form.parentId !== 0">
     <el-form-item   label="上级字典" prop="parentId">
       <treeselect v-model="parentId" :options="dictOptions"  />
     </el-form-item>
   </el-col>
 </el-row>

不能正常点击:

<el-col :span="24" >
  <el-form-item   label="上级字典" prop="parentId">
    <treeselect v-model="parentId" :options="dictOptions"  />
  </el-form-item>
</el-col>

其他场景下,应该也是样式冲突的问题。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue项目打包编译优化方案

    Vue项目打包编译优化方案

    当一个较复杂的vue项目打包后,文件会非常大,而且访问时资源加载速度很慢,本文介绍了几种措施来优化。
    2020-09-09
  • vue实现评论列表功能

    vue实现评论列表功能

    本文通过实例代码给大家介绍了vue实现评论列表功能,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-10-10
  • Vue实现下载文件而非浏览器直接打开的方法

    Vue实现下载文件而非浏览器直接打开的方法

    对于浏览器来说,文本、图片等可以直接打开的文件,不会进行自动下载,下面这篇文章主要给大家介绍了关于Vue实现下载文件而非浏览器直接打开的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • vue3 setup语法糖下的定时器的使用与销毁

    vue3 setup语法糖下的定时器的使用与销毁

    如果在组件中需要使用定时器,注意在销毁组件的时候,要对定时器进行销毁,否则时间长了会导致页面卡顿,这篇文章给大家介绍vue3 setup语法糖下的定时器的使用与销毁的知识,感兴趣的朋友一起看看吧
    2024-02-02
  • vue-cli 2.*中导入公共less文件的方法步骤

    vue-cli 2.*中导入公共less文件的方法步骤

    这篇文章主要介绍了vue-cli 2.*中导入公共less文件的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • vue里面使用mui的弹出日期选择插件实例

    vue里面使用mui的弹出日期选择插件实例

    今天小编就为大家分享一篇vue里面使用mui的弹出日期选择插件实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue中如何动态显示表格内容

    Vue中如何动态显示表格内容

    这篇文章主要介绍了Vue中如何动态显示表格内容问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Vue 页面跳转不用router-link的实现代码

    Vue 页面跳转不用router-link的实现代码

    这篇文章主要介绍了 Vue 页面跳转不用router-link的实现代码,文中给大家介绍了vue router-link跳转传值示例,需要的朋友可以参考下
    2018-04-04
  • Vue3的setup在el-tab中动态加载组件的方法

    Vue3的setup在el-tab中动态加载组件的方法

    公司某项目需求在页面显示的组件是根据角色变化而变化的,怎么实现这个效果呢,下面小编给大家介绍下Vue3的setup在el-tab中动态加载组件的方法,需要的朋友可以参考下
    2022-11-11
  • 使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)

    使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)

    这篇文章主要介绍了使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二),非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-01-01

最新评论