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

  • opporeno4pro是否有指纹解锁功能(opporeno4pro有什么功能)

    opporeno4pro是否有指纹解锁功能(opporeno4pro有什么功能)

  • 剪映怎么删除黑屏部分(剪映怎么删除黑色的部分)

    剪映怎么删除黑屏部分(剪映怎么删除黑色的部分)

  • qq闭麦显示什么(qq闭麦对方会听到提示麻)

    qq闭麦显示什么(qq闭麦对方会听到提示麻)

  • ipad充电半天还是红色(ipad充半天还是1)

    ipad充电半天还是红色(ipad充半天还是1)

  • 删除好友过于频繁要等多久(删除好友过于频繁请稍后再试什么意思)

    删除好友过于频繁要等多久(删除好友过于频繁请稍后再试什么意思)

  • 微信三天可见是对所有人还是有选择性(微信三天可见是被删了吗)

    微信三天可见是对所有人还是有选择性(微信三天可见是被删了吗)

  • 手机已用空间包括哪些内容(手机已用空间包括那些软件)

    手机已用空间包括哪些内容(手机已用空间包括那些软件)

  • 怎么关闭指纹解锁功能(怎么关闭指纹解锁功能华为手机)

    怎么关闭指纹解锁功能(怎么关闭指纹解锁功能华为手机)

  • 小度在家录制的视频在哪里看(小度在家录制的视频在哪)

    小度在家录制的视频在哪里看(小度在家录制的视频在哪)

  • 钉钉在哪里退出登录(钉钉在哪里退出群聊)

    钉钉在哪里退出登录(钉钉在哪里退出群聊)

  • 开悬浮窗有什么用(开悬浮窗有什么坏处)

    开悬浮窗有什么用(开悬浮窗有什么坏处)

  • 操作系统多任务功能是指(操作系统的多任务功能)

    操作系统多任务功能是指(操作系统的多任务功能)

  • 格式化手机对手机有伤害吗(格式化手机对手机影响吗)

    格式化手机对手机有伤害吗(格式化手机对手机影响吗)

  • 至强e31230v3相当于i几(至强e31230v3相当于i3几代)

    至强e31230v3相当于i几(至强e31230v3相当于i3几代)

  • 苹果x为什么耗电那么快(苹果x很费电是什么原因)

    苹果x为什么耗电那么快(苹果x很费电是什么原因)

  • 怎么在pdf里删除一页(怎么在pdf里删除页面)

    怎么在pdf里删除一页(怎么在pdf里删除页面)

  • 抖音账号注销后别人还能看到我吗(抖音账号注销后作品还在吗)

    抖音账号注销后别人还能看到我吗(抖音账号注销后作品还在吗)

  • 微信即刻视频怎么发(微信 即刻视频)

    微信即刻视频怎么发(微信 即刻视频)

  • vivo23有红外线功能吗(vivo有红外线功能)

    vivo23有红外线功能吗(vivo有红外线功能)

  • 微信怎么解除安全模式(微信怎么解除安全保护状态登录不上去了)

    微信怎么解除安全模式(微信怎么解除安全保护状态登录不上去了)

  • 相互保可以保多少疾病(相互保可以保几个人)

    相互保可以保多少疾病(相互保可以保几个人)

  • 系统升级为WIN10后,为什么桌面图标无法移动?(系统升级为win11)

    系统升级为WIN10后,为什么桌面图标无法移动?(系统升级为win11)

  • 电脑上锁屏密码教程(如何把电脑上锁屏密码)

    电脑上锁屏密码教程(如何把电脑上锁屏密码)

  • 按适用税率征税销售额等于销售收入吗
  • 企业避税和逃税的关系
  • 税务机关如何处理公司多交税
  • 公账转法人私账的注意事项
  • 税控盘服务商
  • 内账月末怎样结转
  • 转租房产税计税依据
  • 自然人税收管理系统怎么申报个税
  • 基本户没有注销对法人有影响吗
  • 合同租金总收入怎么填
  • 企业如何列支个人收入
  • 支付境外特许权所得需要交什么税
  • 应解汇款科目
  • 以前年度多交所得税,跨年退回怎么做会计分录
  • 出口没有退税的发票
  • 有限公司结业清算
  • 砂石加工行业交什么税
  • 甲供材简易征收税率
  • 财会【2016】22号文
  • 印花税季度报还是月报
  • 收到的发票开票人是管理员,这样可以吗?
  • 以前年度已经缴纳的税
  • 注销往来怎么清理
  • 小规模购买农产品
  • 特殊性税务处理弥补亏损限额
  • 发票开负数冲红做什么会计分录?
  • macbook发热会烧坏吗
  • 预付账款属于资产类
  • 发票来了冲预付账款怎么记账
  • 印花税需要哪些部门核准
  • 如何解决win7系统不稳定
  • 商场外面的广告牌叫什么
  • php获取扩展名的几种方法
  • php制作数字验证码
  • 汇兑损失是否可以抵扣
  • thinkphp with
  • 处置长期股权投资产生的收益计入什么科目
  • uniapp微信小程序广告
  • node-js
  • 科目汇总表借方发生额等于贷方发生额吗
  • phpcms模板制作教程
  • 织梦怎么改网站主页
  • 工会经费申报的计税比率是
  • 科技局创业扶持资金
  • 公司个人借款如何做账
  • 发票认证注意事项及细节
  • 日记总账的适用范围
  • 筹资现金流量净额
  • 一般纳税人季报还是月报
  • 缴纳增值税附加税
  • 收到的出口退税款需要并入利润总额吗
  • 会计调整以前年度遗留问题查不出来说明怎么写
  • 存货换入无形资产账务处理
  • 员工异地工作
  • 生产的半成品怎么做分录
  • 税金及附加科目余额在借方还是贷方
  • 坏账损失的核算方法包括
  • 使用组策略可控制什么
  • ubuntu更新软件
  • win7系统怎么用键盘开机
  • windows系统同时按下CTRL+ALT+DEL键没有弹出任务管理器的解决方法
  • u盘安装win10ghost
  • macosmajove
  • sbdrvdet.exe - sbdrvdet是什么进程 有什么用
  • linux ping命令的用法
  • win73d设置怎么设置
  • win10系统怎么设置电脑密码
  • linux端口流量监控
  • tar命令参数详解
  • linux 多块硬盘虚拟成一块
  • android 自定义
  • 用来检测程序小错误的测试方法
  • linux查看远程服务是否开启
  • angular js表达式
  • Linux 中的各项 CPU 利用率是这样算出来的
  • jquery做菜单
  • jquery基础教程详解
  • 车辆购置税怎样做账
  • 什么情况适用简易诉讼程序
  • 申报农业项目的程序是什么?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设