vue2 Elementui 树形组件怎么实现多选并获取选中节点的node对象

简介: 树形组件是我们经常用到的组件,主要场景就是:公司后台管理的部门管理,做文章目录等。

一.前言

树形组件是我们经常用到的组件,主要场景就是:公司后台管理的部门管理,做文章目录等。


二.常用的几种方法及说明

1.node-click:节点被点击时的回调

共三个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、节点对应的 Node、节点组件本身。


<div class="container">
        <el-tree :data="data" show-checkbox node-key="id" ref="tree" highlight-current @node-click="clickFn"
            @check="check"></el-tree>
</div>


clickFn (data, node, item) {
            console.log(data);
            console.log(node);
            console.log(item);
 }


8be560bbe3404cd7b19d4e70a4f1aaac.png


2.check:当复选框被点击的时候触发


共两个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、树目前的选中状态对象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性

<div class="container">
        <el-tree :data="data" show-checkbox node-key="id" ref="tree" highlight-current @node-click="clickFn"
            @check="check"></el-tree>
    </div>

check (checkedNodes, checkedKeys) {
            // 获取选中节点的node对象
            this.nodes = checkedKeys.checkedNodes;
            for (let i = 0; i < this.nodes.length; i++) {
                let a = this.$refs.tree.getNode(this.nodes[i].id);
                console.log(a);
            }
        },


a77369da1ac44fe7981e3f92413d2843.png


3.check-change:节点选中状态发生变化时的回调


共三个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、节点本身是否被选中、节点的子树中是否有被选中的节点


4.getNode方法:根据 data 或者 key 拿到 Tree 组件中的 node


(data) 要获得 node 的 key 或者 data

getNode方法的用法:this.$refs.tree.getNode(this.nodes[i].id);

参数就是节点的id:就是node-key绑定的id

例如:node-key="name";this.$refs.tree.getNode(this.nodes[i].name);

具体看需求,前提是你树形data里面有这个属性

5.check-on-click-node


是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点。


6.default-expanded-keys


默认展开的节点的 key 的数组


三.我们实现标题中提到的需求主要用到check事件和getNode方法

check (checkedNodes, checkedKeys) {
            console.log(checkedNodes);
            console.log(checkedKeys);
            // 获取选中节点的node对象
            this.nodes = checkedKeys.checkedNodes;
            for (let i = 0; i < this.nodes.length; i++) {
                let a = this.$refs.tree.getNode(this.nodes[i].id);
                console.log(a);
            }
        },


5e95405fbcd3412ca3b739d06ade46b4.png


相关文章
|
9月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
744 2
|
12月前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
1182 0
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
1471 4
|
12月前
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
11月前
|
运维 Kubernetes API
解决Kubernetes集群中master节点无法与node节点通信的策略。
这些策略不仅需要执行命令来获取信息,更要深入理解集群组件如何交互,以便进行准确的故障定位与修复。一条一条地排查,并适时回顾配置文件,证书有效性等,通常可以找到问题所在。给出的命令需要根据具体环境的配置进行适当的修改。故障排除往往是一个细致且需求反复验证的过程,但遵循上述策略可以高效定位大部分通信故障的原因。
714 12
|
11月前
|
Kubernetes 网络协议 API
在k8s集群中解决master节点与node通信问题
整个排查和解决流程需要综合应用以上方法,以及根据具体情况调整排查顺序或应用其他技术细节。为保证解决方案的实用性和有效性,还需紧跟Kubernetes社区的最新动态和最佳实践。在实际操作过程中,应记录所采取的步骤和观察到的系统响应,以便在遇到类似问题时能够快速定位和解决。
691 8
|
12月前
|
机器学习/深度学习 Kubernetes 监控
Kubernetes 节点故障自愈方案:结合 Node Problem Detector 与自动化脚本
本文深入探讨了Kubernetes节点故障自愈方案,结合Node Problem Detector(NPD)与自动化脚本,提供技术细节、完整代码示例及实战验证。文章分析了硬件、系统和内核层面的典型故障场景,指出现有监控体系的局限性,并提出基于NPD的实时事件捕获与自动化诊断树的改进方案。通过深度集成NPD、设计自动化修复引擎以及展示内核死锁恢复的实战案例,文章详细说明了自愈流程的实现步骤与性能优势。此外,还提供了生产环境部署指南、高可用架构设计及安全防护措施,并展望了机器学习增强故障预测和混沌工程验证的进阶优化方向。全文约1.2万字,适合希望提升Kubernetes集群稳定性的技术人员阅读。
762 2
|
JavaScript 前端开发 UED
Vue 表情包输入组件的实现代码:支持自定义表情库、快捷键发送和输入框联动的聊天表情解决方案
本文详细介绍了在 Vue 项目中实现一个功能完善、交互友好的表情包输入组件的方法,并提供了具体的应用实例。组件设计包含表情分类展示、响应式布局、与输入框的交互及样式定制等功能。通过核心技术实现,如将表情插入输入框光标位置和点击外部关闭选择器,确保用户体验流畅。同时探讨了性能优化策略,如懒加载和虚拟滚动,以及扩展性方案,如自定义主题和国际化支持。最终,展示了如何在聊天界面中集成该组件,为用户提供丰富的表情输入体验。
876 8
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
701 161