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

  • 支付宝划一划是什么(支付宝划一划有什么用)

    支付宝划一划是什么(支付宝划一划有什么用)

  • 如何经营好自己的微博获得更多的关注(如何经营好自己的事业)

    如何经营好自己的微博获得更多的关注(如何经营好自己的事业)

  • nova7se支持nfc吗(nova7se5g支持nfc吗)

    nova7se支持nfc吗(nova7se5g支持nfc吗)

  • 注册美团骑手需要什么条件(注册美团骑手需要哪些费用)

    注册美团骑手需要什么条件(注册美团骑手需要哪些费用)

  • ipad air 3上市时间(ipadair3上市时间中国)

    ipad air 3上市时间(ipadair3上市时间中国)

  • 苹果发信息蓝色是什么意思(苹果发信息蓝色和绿色)

    苹果发信息蓝色是什么意思(苹果发信息蓝色和绿色)

  • 淘宝dsr是什么意思(淘宝网店中dsr的中文意思是什么)

    淘宝dsr是什么意思(淘宝网店中dsr的中文意思是什么)

  • 苹果ld账号是什么意思(苹果id账号是)

    苹果ld账号是什么意思(苹果id账号是)

  • 实名认证可以认证几个号(实名认证可以认证多个账号吗)

    实名认证可以认证几个号(实名认证可以认证多个账号吗)

  • 手机qq保存不了图片怎么回事(手机qq保存不了视频怎么回事)

    手机qq保存不了图片怎么回事(手机qq保存不了视频怎么回事)

  • 怎么看系统是32位还是62位

    怎么看系统是32位还是62位

  • 一个c程序是由什么组成(一个c程序是由若干个函数构成的)

    一个c程序是由什么组成(一个c程序是由若干个函数构成的)

  • 手机淘宝哪里领淘金币(淘宝领取教程)

    手机淘宝哪里领淘金币(淘宝领取教程)

  • 手机相册打不开怎么办(手机相册打不开怎么办打开都是白屏怎么回事)

    手机相册打不开怎么办(手机相册打不开怎么办打开都是白屏怎么回事)

  • mate30前置摄像头几个(mate30前置摄像头模糊)

    mate30前置摄像头几个(mate30前置摄像头模糊)

  • 快手一发作品就闪退是什么(快手一发作品就掉粉什么原因)

    快手一发作品就闪退是什么(快手一发作品就掉粉什么原因)

  • oppo桌面图标怎么设置(oppo桌面图标怎么弄到下面)

    oppo桌面图标怎么设置(oppo桌面图标怎么弄到下面)

  • 移动视频彩铃什么意思(移动视频彩铃业务)

    移动视频彩铃什么意思(移动视频彩铃业务)

  • 微信满屏表情怎么发(微信满屏表情怎么弄)

    微信满屏表情怎么发(微信满屏表情怎么弄)

  • word怎么添加红色阴影边框(word怎么添加红色底纹)

    word怎么添加红色阴影边框(word怎么添加红色底纹)

  • 小米手机联网权限在哪里(小米手机联网权限怎么开启)

    小米手机联网权限在哪里(小米手机联网权限怎么开启)

  • oppor17怎么关机重启(oppor17怎么关机不了了)

    oppor17怎么关机重启(oppor17怎么关机不了了)

  • 微信头像小蓝圈是什么(微信头像上蓝色的小圈)

    微信头像小蓝圈是什么(微信头像上蓝色的小圈)

  • 手机信号边上出现hd是什么意思(手机信号边上出现米数什么情况)

    手机信号边上出现hd是什么意思(手机信号边上出现米数什么情况)

  • 如何让屏幕黄斑消失(屏幕太黄怎么调)

    如何让屏幕黄斑消失(屏幕太黄怎么调)

  • 怎样删除苹果系统20g(怎样删除苹果系统抖音里的相片图集里的一张)

    怎样删除苹果系统20g(怎样删除苹果系统抖音里的相片图集里的一张)

  • 2018年装机电源怎么选?中高端电源推荐(装机电源怎么装)

    2018年装机电源怎么选?中高端电源推荐(装机电源怎么装)

  • 冰川国家公园中的佩里托莫雷诺冰川,阿根廷 (© Juergen Schonnop/Getty Images)(冰川国家公园在哪)

    冰川国家公园中的佩里托莫雷诺冰川,阿根廷 (© Juergen Schonnop/Getty Images)(冰川国家公园在哪)

  • 上月少计提的个税本月怎么调整
  • 税盾是怎么产生的
  • 营业收入是不是利润
  • 企业缴纳印花税通过什么科目
  • 洗车费怎么做会计分录
  • 充电桩收入属于什么类别
  • 保安服务专票是多少税点
  • 劳务分包异地用预缴税款吗?
  • 企业所得税税前扣除异常
  • 增值税普通发票申报
  • 财税[2010]121号中的宗地容积率指的是什么?
  • 关于财产保险公司的论文
  • 股权转让未分配利润如何做账
  • 公司向外单位借款摘要怎么写
  • 公司向个人转账分录
  • 无形资产摊销完还需要报废
  • 应交税费重分类分录
  • 失控发票如何转出
  • 竣工决算调整入库流程
  • 注销未分配利润怎么处理账务
  • win11耳机插电脑没声音怎么办
  • 计提增值税的会计科目
  • 土地补偿款会议记录范文
  • 政府补贴专项资金使用要求
  • 建筑业预缴企业所得税税率是多少
  • CoverDesigner.exe是一个安全进程吗 CoverDesigner进程查询
  • 产品设计费增值税怎么算
  • html 调用扫码
  • php写一个函数,算出两个文件的相对路径
  • php设计模式及使用场景
  • 红字怎么看
  • 神经网络模型python
  • mysql的存储
  • 企业所得税的计算公式三种
  • 营业利润包括资产处置收益吗
  • 现金流量表第四个期初现金余额怎么填
  • python中如何删除文件
  • 劳务公司承接项目的方案怎么写
  • 关闭php报错
  • 企业从银行借款会导致其营运资本
  • 工会记账凭证怎么记
  • 坏账准备需要计提增值税吗
  • 应收账款确认无法收回的会计处理
  • 印花税如何申请退税
  • 付款金额与增值金额区别
  • 行政事业单位拨付给企业的财政补助款用交增值税吗
  • 企业为什么要转移用工风险什么意思
  • 进项税留底怎么处理
  • 其他权益工具投资公允价值变动计入什么科目
  • 电子承兑汇票做账看哪个日期
  • 工伤医疗补助可以申请吗
  • 事业单位装修费账务处理
  • 固定资产转为投资的条件
  • 固定资产的调整科目
  • 销售商品托收承付怎么确认收入
  • 会计行政法规包括哪些条例?具体说明?
  • 明细账怎么订起来
  • mysql8.0 win7
  • mysql数据库远程备份和恢复
  • mysql5.7.29安装
  • vsftp查看状态
  • Win7系统打开蓝牙
  • 苹果MAC电脑如何设置开机密码
  • win7系统的安装
  • win10自带microsoft office怎么用
  • redhat下载地址
  • 优质安卓应用
  • codeblocks配置opencv
  • 关于js的描述错误的是
  • dos命令怎么输入命令
  • div+css布局是什么
  • unity局域网多人游戏
  • linux中awk用法详解
  • javascript快速入门
  • jquery页面关闭事件
  • 外埠企业如何在经营地缴税
  • 税务上征信
  • 国税总局商品编码是什么
  • 兼营增值税应税项目和免税项目
  • 湖南省水利建设基金
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设