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

  • 网络营销——怎样利用QQ群推广的实战技巧(网络营销怎么营销)

    网络营销——怎样利用QQ群推广的实战技巧(网络营销怎么营销)

  • js 转字符串(js转字符串数组)

    js 转字符串(js转字符串数组)

  • oppok9s是什么处理器(oppok9s手机怎么样好不好)

    oppok9s是什么处理器(oppok9s手机怎么样好不好)

  • mac如何录屏(苹果电脑mac如何录屏)

    mac如何录屏(苹果电脑mac如何录屏)

  • 华为p40pro外观尺寸(华为p40pro外观详解)

    华为p40pro外观尺寸(华为p40pro外观详解)

  • mg3080换墨盒必须要同时换二个吗(mg3080墨盒安装视频)

    mg3080换墨盒必须要同时换二个吗(mg3080墨盒安装视频)

  • 字符数如何设置(字符 字数)

    字符数如何设置(字符 字数)

  • iqooneo3防水吗(vivoiqooneo3防水吗)

    iqooneo3防水吗(vivoiqooneo3防水吗)

  • 无线穿墙模式是什么意思(无线网穿墙模式)

    无线穿墙模式是什么意思(无线网穿墙模式)

  • 华为电脑死机了怎么办(华为电脑死机了按哪个键恢复)

    华为电脑死机了怎么办(华为电脑死机了按哪个键恢复)

  • 爱思助手可以降系统吗(爱思助手可以降低苹果版本吗)

    爱思助手可以降系统吗(爱思助手可以降低苹果版本吗)

  • 小米路由器3支持200m光纤吗(小米路由器3支持mesh吗)

    小米路由器3支持200m光纤吗(小米路由器3支持mesh吗)

  • 电话卡上的数字是什么(电话卡上的数字是干什么用的)

    电话卡上的数字是什么(电话卡上的数字是干什么用的)

  • 美团订单无效请重新选择商品什么意思(美团订单显示无效)

    美团订单无效请重新选择商品什么意思(美团订单显示无效)

  • am3和am3+ cpu能通用吗(am3和am2+ cpu能通用吗)

    am3和am3+ cpu能通用吗(am3和am2+ cpu能通用吗)

  • 网址跟网站区别(网址和网站区别)

    网址跟网站区别(网址和网站区别)

  • ps钢笔生成选区快捷键(ps钢笔工具如何建立选区)

    ps钢笔生成选区快捷键(ps钢笔工具如何建立选区)

  • ipad2018分辨率怎么调(2018款ipad分辨率)

    ipad2018分辨率怎么调(2018款ipad分辨率)

  • vivo浏览器个人中心在哪(vivo浏览器个人中心在哪里找)

    vivo浏览器个人中心在哪(vivo浏览器个人中心在哪里找)

  • 苹果11可不可以无线充电(苹果11可不可以开空调)

    苹果11可不可以无线充电(苹果11可不可以开空调)

  • 手机双4g是什么意思(双4g功能有什么用)

    手机双4g是什么意思(双4g功能有什么用)

  • 16lab是什么(lab126是什么)

    16lab是什么(lab126是什么)

  • 微信头像上的小红旗怎么弄(微信头像上的小国旗怎么弄)

    微信头像上的小红旗怎么弄(微信头像上的小国旗怎么弄)

  • 小米cc9有红外线功能吗(小米cc9红外线遥控器删了)

    小米cc9有红外线功能吗(小米cc9红外线遥控器删了)

  • iphone电话拉黑了是什么反应(iPhone电话拉黑了还能打进来)

    iphone电话拉黑了是什么反应(iPhone电话拉黑了还能打进来)

  • 华为p30是双卡双待双通吗(华为p30手机是双卡双待手机吗?)

    华为p30是双卡双待双通吗(华为p30手机是双卡双待手机吗?)

  • win10平板模式不能触屏怎么办(win10平板模式不好用)

    win10平板模式不能触屏怎么办(win10平板模式不好用)

  • 前端插件库之vue3使用element-plus实现登录、注册页面和忘记密码弹窗,以及已有样式的覆盖(vue前端组件库)

    前端插件库之vue3使用element-plus实现登录、注册页面和忘记密码弹窗,以及已有样式的覆盖(vue前端组件库)

  • 微信小程序:用户微信登录流程(附:流程图+源码)(微信小程序用电脑怎么打开)

    微信小程序:用户微信登录流程(附:流程图+源码)(微信小程序用电脑怎么打开)

  • vue新手入门之使用vue框架搭建用户登录注册案例,手动搭建webpack+Vue项目(附源码,图文详解,亲测有效)(vue新手教程)

    vue新手入门之使用vue框架搭建用户登录注册案例,手动搭建webpack+Vue项目(附源码,图文详解,亲测有效)(vue新手教程)

  • 社保由税务局统一征收的地区
  • 小规模纳税人的账务处理
  • 餐饮费入什么科目
  • 租车开发票属于什么类
  • 申请纳税申报怎么申报
  • 企业所得税申报表A类
  • 自产农产品免征增值税
  • 职工教育经费税收金额怎么算
  • 出纳需要填哪些表
  • 不随物品一起销售的包装物怎么做账?
  • 增值税税收返还政策
  • 固定资产可以一次抵扣吗
  • 企业发放员工工资
  • 非正常损失进项税额怎么处理
  • 年末计提存货跌价准备
  • 营改增后进项税相关规定
  • 分公司注销所得税
  • 钢结构制作安装合同
  • 逃税漏税不用坐牢吗
  • 离职补偿金如何计算
  • 盐酸编号
  • 个人所得税法规定可减征个税的情形有
  • 俱乐部会员有什么用
  • 30万以下免征附加税包含30万吗
  • 序列号不可用怎么办
  • 工会经费计税依据是上年工资还是当年工资
  • 公司账户收到车险怎么做账
  • 捐款属于什么会计科目类别
  • 土地抵扣进项税,,能调回来吗
  • 预计负债 负债
  • Mac怎么禁用icloud
  • 升级win10到专业版
  • 企业所得税税负率多少合适
  • 现代服务业包括哪些
  • 计提小规模增值税怎么做账
  • 企业受赠业务的法律规定
  • 天堂之路歌曲
  • 分享项目成果
  • php数据表
  • 报废机器设备如何缴纳增值税
  • 分页浏览是什么意思
  • 汇算清缴管理费用明细有哪些
  • 股票的溢价是怎么回事
  • 汇算清缴期间费用保险费是什么
  • 劳务外经证预缴税款
  • python的np.array
  • 小企业会计准则主要按照什么计量
  • 小规模都是做季报吗
  • 存货跌价准备借减贷增吗
  • 无偿调入的固定资产怎么记账
  • 在windowsxp的应用程序中,经常
  • 以经营房产投资合营收固定收益如何开发票?
  • 收到汇算清缴退回的税款如何做账
  • 工资计提多了冲账怎么办
  • 客户手续费率
  • 废旧物资收购发票政策2018
  • 应收账款和坏账准备的解题思路
  • mysql在本地主机创建用户账号
  • fedora系统
  • 电脑网络唤醒功能
  • win8ui
  • windowxp系统升级
  • win7旗舰版开机
  • ubuntu安装多个cuda
  • splash.exe - splash是什么进程 有什么作用
  • win7安装cad2010
  • linux管理员权限命令
  • ExtJS4给Combobox设置列表中的默认值示例
  • perl如何使用
  • cocos2d怎么用
  • android webview获取文本
  • unity3d性能优化之贴图科普篇
  • 如何在unity里设置碰撞体积
  • nodejs.
  • unity破解安装教程
  • sudo提权漏洞
  • 江苏国税申报
  • 陕西省税务发票查询系统
  • 哪些税和费计入应交税费
  • 重庆市九龙坡税务局行政服务中心电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设