位置: IT常识 - 正文

element-ui tree 异步树实现勾选自动展开、指定展开、指定勾选

编辑:rootadmin
背景 项目中用到了vue的element-ui框架,用到了el-tree组件。由于数据量很大,使用了数据懒加载模式,即异步树。异步树采用复选框进行结点选择的时候,没法自动展开,官方文档找了半天也没有找到好的办法! 找不到相关的配置,或者方法可以使用。 经过调试与阅读elment-ui源码才发现有现成 ...

推荐整理分享element-ui tree 异步树实现勾选自动展开、指定展开、指定勾选,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

背景

项目中用到了vue的element-ui框架,用到了el-tree组件。由于数据量很大,使用了数据懒加载模式,即异步树。异步树采用复选框进行结点选择的时候,没法自动展开,官方文档找了半天也没有找到好的办法! 找不到相关的配置,或者方法可以使用。 经过调试与阅读elment-ui源码才发现有现成的方法可以进行结点展开。下面就介绍结点展开的实现!

1.监听复选框点击事件check

<el-tree :props="mulprops" :load="loadNode" lazy node-key="id" show-checkbox accordion @current-change="currentChange" :filter-node-method="filterNode" @check="handleCheck" ref="tree" :default-checked-keys="defaultCheckedNodes" :default-expanded-keys="defaultExpandedNodes" > </el-tree>

2.手动展开,使用node.expand()方法

handleCheck(nodeData, treeChecked) { let node = this.$refs.tree.getNode(nodeData.id) //将选中的未展开的节点进行展开 if(node.checked && !node.expanded){ node.expand(function(){ for(let i=0; i< node.childNodes.length; i++){ node.childNodes[i].expand() } }) } }element-ui tree 异步树实现勾选自动展开、指定展开、指定勾选

项目中的实现

一、复选框勾选后能自动展开并选中,先展开再勾选也可以自动展开

1.监听check-change事件

<el-tree :props="mulprops" :load="loadNode" lazy node-key="id" show-checkbox accordion @check-change="handleCheckChange" :filter-node-method="filterNode" ref="tree" :default-checked-keys="defaultCheckedNodes" :default-expanded-keys="defaultExpandedNodes" > </el-tree>

2.编写展开勾选结点方法

handleCheckChange(nodeData, nodeSelected) { let tree = this.$refs.tree; let node = tree.getNode(nodeData.id) //展开选中的未展开的节点 this.expandCheckedNotExpandNodes(node); //具体业务实现 console.log(nodeData, nodeSelected) }, //展开选中的未展开的节点 expandCheckedNotExpandNodes(node) { let tree = this.$refs.tree; if (node.checked && !node.expanded && !node.isLeaf) { node.expand(function () { let childNodes = node.childNodes; for (let i = 0; i < childNodes.length; i++) { let childNode = childNodes[i]; //手动触发check-change事件,事件处理函数中回继续调用此函数,形成递归展开 tree.$emit('check-change', childNode.data, childNode.checked, childNode.indeterminate); } }) } },

二、 展开指定结点

<el-input type="text" v-model='nodeDataIds' placeholder="请输入结点数据ID(多个以逗号分割)"> ></el-input> <el-button type="primary" @click="expandNodes(nodeDataIds.split(','))">展开指定结点</el-button> //展开匹配的结点,根结点默认展开 expandNodes(nodeDataIds){ let that = this; let tree = this.$refs.tree; let rootNode = tree.root; //展开一层结点函数 let expandRootChildren = function(){ let childNodes = rootNode.childNodes; for (let i = 0; i < childNodes.length; i++) { let childNode = childNodes[i]; that.expandNode(childNode,nodeDataIds); } }; //根结点未展开进行展开 if(!rootNode.expanded){ rootNode.expand(function(){ //展开根结点的孩子 expandRootChildren(); }); }else{ //展开根结点的孩子 expandRootChildren(); } }, //展开指定结点下匹配的结点 expandNode(node, nodeDataIds){ let that = this; //当前结点需要展开未展开,则展开 if(nodeDataIds.indexOf(node.data.id) != -1){ //孩子结点需要展开未展开,则展开 let expandChildren = function(){ let childNodes = node.childNodes; for (let i = 0; i < childNodes.length; i++) { let childNode = childNodes[i]; //递归展开孩子结点 that.expandNode(childNode, nodeDataIds); } } if(!node.expanded){ node.expand(function(){ expandChildren(); }); }else{ expandChildren(); } } },

三. 勾选指定结点

1.异步树,需先展开指定结点,然后有数据了才能勾选上(即:展开父结点,子节点有了数据才能勾选上)

<el-button type="primary" @click="checkNodes(nodeDataIds.split(','))">选中指定结点</el-button> checkNodes(nodeDataIds){ let tree = this.$refs.tree; tree.setCheckedKeys(nodeDataIds, false) }

2.设置默认勾选的结点,首次展开会自动勾选上,适合写数据回显

default-checked-keys=['node001','node002']
本文链接地址:https://www.jiuchutong.com/zhishi/310137.html 转载请保留说明!

上一篇:为你的WordPress添加图片替换功能 Enable Media Replace(wordpress!)

下一篇:Python中包如何发布?(python包发布)

  • 什么叫应用程序域(什么叫应用程序的模板)

    什么叫应用程序域(什么叫应用程序的模板)

  • 苹果11刘海屏怎么隐藏(苹果11刘海屏怎么换小熊)

    苹果11刘海屏怎么隐藏(苹果11刘海屏怎么换小熊)

  • 抖音里面遇到冲突账号怎么办(抖音充值遇到问题怎么办)

    抖音里面遇到冲突账号怎么办(抖音充值遇到问题怎么办)

  • 打印机一打印就出现文件另存为(打印机一打印就资源管理器停止工作)

    打印机一打印就出现文件另存为(打印机一打印就资源管理器停止工作)

  • wps可以扫描文件吗(wps可以扫描文件成word文档保存吗)

    wps可以扫描文件吗(wps可以扫描文件成word文档保存吗)

  • 手机屏幕自己一明一暗咋回事(手机屏幕自己一闪一闪的)

    手机屏幕自己一明一暗咋回事(手机屏幕自己一闪一闪的)

  • mtkp90处理器相当于骁龙什么级别(mtkheliop90处理器)

    mtkp90处理器相当于骁龙什么级别(mtkheliop90处理器)

  • 苹果手机短信自动删除怎么回事(苹果手机短信自动播报)

    苹果手机短信自动删除怎么回事(苹果手机短信自动播报)

  • 老版ipad无法下载微信(老版ipad无法下载软件)

    老版ipad无法下载微信(老版ipad无法下载软件)

  • 栅格化是什么意思(栅格化的过程)

    栅格化是什么意思(栅格化的过程)

  • 微信语音没有提示音怎么回事(微信语音没有提示怎么办)

    微信语音没有提示音怎么回事(微信语音没有提示怎么办)

  • 户户通怎么升级(户户通怎么升级高清)

    户户通怎么升级(户户通怎么升级高清)

  • 手机怎么设置透明壁纸(手机怎么设置透明图标)

    手机怎么设置透明壁纸(手机怎么设置透明图标)

  • 苹果的访问限制在哪(苹果的访问限制怎么关闭)

    苹果的访问限制在哪(苹果的访问限制怎么关闭)

  • 时刻视频取消点赞(时刻视频是什么意思)

    时刻视频取消点赞(时刻视频是什么意思)

  • 苹果11手机在哪里设置信息闪光灯(苹果11手机在哪里调呼叫转移)

    苹果11手机在哪里设置信息闪光灯(苹果11手机在哪里调呼叫转移)

  • 加密文件怎么打印出来(加密文件怎么打开qq浏览器)

    加密文件怎么打印出来(加密文件怎么打开qq浏览器)

  • 怎么查银行预留手机号(怎么查银行预留信息)

    怎么查银行预留手机号(怎么查银行预留信息)

  • 苹果6home键在哪里设置(苹果8home键在哪)

    苹果6home键在哪里设置(苹果8home键在哪)

  • 收款播报音响怎么连接(收款语音播报音响如何连接手机)

    收款播报音响怎么连接(收款语音播报音响如何连接手机)

  • 介绍一款开源的自动驾驶仿真模拟器-Carla(实用的开源软件)

    介绍一款开源的自动驾驶仿真模拟器-Carla(实用的开源软件)

  • 前端经典面试题 | 吊打面试官系列 之 说说你对TypeScript 和 JavaScript的理解(前端经典面试题及答案)

    前端经典面试题 | 吊打面试官系列 之 说说你对TypeScript 和 JavaScript的理解(前端经典面试题及答案)

  • 增值税申报可以作废几次
  • 个人怎么缴纳印花税
  • 增值税附加税税率是多少
  • 补交增值税产生的费用
  • 查看企业用什么软件
  • 红字信息表可以开一半吗
  • 什么情况下要做试管怀孕
  • 怎么红冲暂估成本
  • 支出没有发票怎么做账
  • 软件的维修性要求
  • 建筑工程老项目时间
  • 房贷利息在哪里能看到
  • 税金及附加是否设二级科目
  • 内部收益率计算公式及例题
  • 处理固定资产开什么发票
  • 地下车库怎么缴费
  • 房地产行业的增值税是多少
  • 固定资产报废清理账务处理
  • win10壁纸图片怎么删除
  • linux如何开启端口
  • 本月损益类怎么结转
  • 国外交工作的基本出发点和落脚点是
  • windows7旗舰版为什么很多东西打不开
  • PHP:stream_get_meta_data()的用法_Stream函数
  • 作废的凭证不能恢复吗
  • php 验证码
  • 股权转让有溢价分录怎么写
  • 威尔士黄水仙
  • 微信小程序反编译2023
  • 加油费属于什么费用类别的
  • php删除txt指定内容
  • mmdetection ValueError: need at least one array to concatenate解决方案
  • f12过滤请求
  • 维修费成本怎么结转
  • 大学生网页设计大赛
  • python函数的默认值
  • 个人取得的劳务报酬所得,如何缴纳个税
  • 计提工会经费是什么工资项目
  • 抵扣的税可以退掉么?
  • 建筑劳务公司税务筹划
  • 金税四期对建筑行业有什么影
  • 除湿机计入固定费用吗
  • 营业外收入怎么结转
  • 开诊所会计应如何做账
  • 暂估入库有时间限制吗
  • 国有资产无偿划转协议
  • 购买空调报销写什么科目的
  • 土地承包费和土地租赁费收入记账
  • 文化传媒公司的主营业务
  • 出售固定资产怎样报增值税申报表
  • 行程单发票抬头是什么意思
  • 发票开错了记账凭证如何做?
  • 营业执照经营范围怎么变更
  • 会计科目中英文对照表下载
  • sql语句学习
  • CentOS EXT4文件系统的详解
  • windows server2012安装完没有桌面
  • Win7中Remote Procedure Call(RPC)服务能关闭吗
  • ubuntu怎么禁用nouveau
  • ubuntu 14.04.6
  • w7系统怎么添加打印机
  • linux运维常用命令汇总
  • 计算机策略设置
  • u盘背景图片设置方法
  • win7怎么删除操作中心
  • win10下载英雄联盟运行没反应
  • linux系统安装程序
  • computed缓存
  • jQuery+PHP+MySQL二级联动下拉菜单实例讲解
  • python怎么输出日志
  • 学习雷锋好榜样
  • opengl使用教程
  • AndroidAnnotations 自定义控件 ant编译 找不到类
  • Android Fragment学习笔记(2) ----使用ListFragment显示列表(上)
  • unity3d初学者教程视频
  • 创建简单的Web网页实验总结ASP
  • 刀具路径轨迹模拟
  • JavaScript jquery及AJAX小结
  • Tiled GPU perf. warning: RenderTexture color surface (0x0) was not cleared/discarded
  • 未缴税税务说明书
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设