位置: 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包发布)

  • iphone13pro支持nfc功能吗(iPhone13pro支持双卡吗)

    iphone13pro支持nfc功能吗(iPhone13pro支持双卡吗)

  • 花呗升级入口在哪(花呗升级入口在哪儿)

    花呗升级入口在哪(花呗升级入口在哪儿)

  • 华为p40支持无线充电吗(华为P40支持无线充电的手机)

    华为p40支持无线充电吗(华为P40支持无线充电的手机)

  • 华为mate30支不支持北斗导航吗(华为mate30支不支持120w快充)

    华为mate30支不支持北斗导航吗(华为mate30支不支持120w快充)

  • 荣耀play4pro屏幕刷新频率的多少(荣耀play4PRO屏幕厂商怎么查)

    荣耀play4pro屏幕刷新频率的多少(荣耀play4PRO屏幕厂商怎么查)

  • 抖音粉丝团升级经验每一级需要多少(抖音粉丝团升级亲密度)

    抖音粉丝团升级经验每一级需要多少(抖音粉丝团升级亲密度)

  • iphone6s 处理器(iphone6s处理器相当于骁龙多少)

    iphone6s 处理器(iphone6s处理器相当于骁龙多少)

  • 华为nova7se支持陀螺仪吗(华为nova7se支持OTG吗?)

    华为nova7se支持陀螺仪吗(华为nova7se支持OTG吗?)

  • 笔记本风扇一直转是什么原因(笔记本风扇一直响个不停是什么原因)

    笔记本风扇一直转是什么原因(笔记本风扇一直响个不停是什么原因)

  • 苹果11屏幕自动变暗(苹果11屏幕自动亮怎么关闭)

    苹果11屏幕自动变暗(苹果11屏幕自动亮怎么关闭)

  • 在windows7中对系统文件的维护的工具是(下列对windows7的叙述,错误的是)

    在windows7中对系统文件的维护的工具是(下列对windows7的叙述,错误的是)

  • 苹果手机怎么设置暗黑模式(苹果手机怎么设置动态壁纸)

    苹果手机怎么设置暗黑模式(苹果手机怎么设置动态壁纸)

  • 微型计算机的主要用途(微型计算机的主板上没有集成键盘和鼠标的接口)

    微型计算机的主要用途(微型计算机的主板上没有集成键盘和鼠标的接口)

  • 手机保护膜分几种(手机膜的保护膜)

    手机保护膜分几种(手机膜的保护膜)

  • 微博私信红色感叹号(微博私信有红圈)

    微博私信红色感叹号(微博私信有红圈)

  • 小米8支持双4g信号吗(小米8支持双移动卡吗)

    小米8支持双4g信号吗(小米8支持双移动卡吗)

  • realme X支持语音唤醒吗(realmeq语音助手可以语音唤醒吗)

    realme X支持语音唤醒吗(realmeq语音助手可以语音唤醒吗)

  • 拼多多里面的省钱月卡自动续费怎么取消(拼多多里面的省钱月卡在哪里?)

    拼多多里面的省钱月卡自动续费怎么取消(拼多多里面的省钱月卡在哪里?)

  • wadl文件是什么(wl文件是什么意思)

    wadl文件是什么(wl文件是什么意思)

  • 闹钟就寝怎么删除(怎么删除闹钟就寝)

    闹钟就寝怎么删除(怎么删除闹钟就寝)

  • 微信解封填错号码怎么办(微信解封填错号码要等多久可以更改)

    微信解封填错号码怎么办(微信解封填错号码要等多久可以更改)

  • 手机版谷歌地球怎么用(手机版谷歌地球怎么打开)

    手机版谷歌地球怎么用(手机版谷歌地球怎么打开)

  • ps涂抹工具快捷键(ps涂抹工具快捷键是多少)

    ps涂抹工具快捷键(ps涂抹工具快捷键是多少)

  • s10充电速度(三星s10充电功率)

    s10充电速度(三星s10充电功率)

  • python逻辑取反的实现(python 逻辑取反)

    python逻辑取反的实现(python 逻辑取反)

  • 进项税额转出会影响利润吗
  • 开票软件金税盘
  • 银行手续费回单可以作为入账依据吗
  • 单位产品销售税金
  • 收到快递费属于什么科目
  • 土地转让的税费怎么算
  • 跨年发票是否可以报销 审计
  • 固定资产盘点账实不符
  • 持有待售资产固定资产 要计提折旧吗
  • 红字发票信息开错该怎么撤回与相关会计处理
  • 收到去年的成本发票
  • 提前给货款计入什么科目
  • 彩票扣税比例
  • 企业收到税务局退税分录
  • 出口退税进项发票
  • 工程交税必须在工程地点交吗
  • 超市预付卡发票如何入账
  • 进口料件和出口成品的关系
  • 集体福利的增值税怎么算
  • 结转出租包装物的成本
  • 租个人房屋办公怎么租
  • 离婚后房产过户需要多少钱
  • 长期资产的含义
  • 公司购买的原材料,原价格销售合理吗
  • 华为手机屏幕变成黑白色怎么恢复
  • 招标公司返回的钱怎么算
  • 上年度第四季度总结
  • 退回的工伤费用怎么做账
  • 非正常损失含义
  • 大白菜u盘启动后黑屏
  • php模块
  • 锁定任务栏不管用
  • 员工油费补贴过期怎么办
  • 手把手教你linux
  • win10电脑设备管理器在哪
  • linux开机出现grub解决方法
  • 美团提现手续费入哪个会计科目
  • 企业接受现金捐赠如何开具发票
  • 股东无偿投入的土地需要摊销吗
  • 什么叫相机标定
  • vue实现动态菜单权限配置
  • 论文精读分析报告
  • php制作验证码
  • 织梦前台的菜单怎么换
  • 汇算清缴所得税是什么意思
  • ps里的羽化是什么意思
  • 出差补贴是额外的吗
  • 计提折旧会计分录例题
  • mysql使用中遇到的困难和问题
  • 织梦模板安装详细教程
  • 工会经费的主要用途
  • 申报错误要罚款吗
  • 支付给个人的佣金没有发票
  • 丢失增值税发票怎么办
  • mongodb 教程
  • 以摊余成本计量的债权投资与以公允价值计量且其变动
  • 公司购买的金蝶软件属于的固定资产吗
  • 一般纳税人税种核定表
  • 办公室清洁费计入办公费吗
  • 法定盈余公积一般按照企业
  • 开办费入哪个会计科目
  • 无形资产投资入股是否缴纳企业所得税
  • 回购股票会导致所有者权益减少吗
  • 以前年度损益调整借贷方向
  • 建账的要点及应注意的问题
  • win8.1ie浏览器在哪
  • autorun.inf在win10
  • ubuntu 8.04.1 LTS 下的cpu温度监控软件lm-sensors
  • qq远程桌面操作
  • xp系统没无线网络连接怎么办
  • Unity3D面试题整合
  • js 验证数字
  • python 开源ide
  • bootstrap制作的网站页面
  • jquery easyui插件
  • python基础教程chm
  • python smtplib模块详解
  • 税务局试用期
  • 增值税月报怎么报
  • 陕西省医保缴费截止日期2024
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设