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

  • vivox80pro怎么唤醒小v(vivox70怎么唤醒屏幕)

    vivox80pro怎么唤醒小v(vivox70怎么唤醒屏幕)

  • oppo手机音量键失灵(oppo手机音量键调不了声音怎么办)

    oppo手机音量键失灵(oppo手机音量键调不了声音怎么办)

  • 蚂蚁庄园怎样获得福卡(蚂蚁庄园怎样获得饲料)

    蚂蚁庄园怎样获得福卡(蚂蚁庄园怎样获得饲料)

  • 苹果手机更新软件大于200m怎么办(苹果手机更新软件为什么总显示以前的id)

    苹果手机更新软件大于200m怎么办(苹果手机更新软件为什么总显示以前的id)

  • 唯品会退货检查严格吗(唯品会退货不检查不怕调包吗)

    唯品会退货检查严格吗(唯品会退货不检查不怕调包吗)

  • 非群主怎样删除群成员(非群主怎么才能删除群里成员)

    非群主怎样删除群成员(非群主怎么才能删除群里成员)

  • 小米摄像头内存卡满了会自动删除吗(小米摄像头内存卡老是出现异常)

    小米摄像头内存卡满了会自动删除吗(小米摄像头内存卡老是出现异常)

  • 拼多多月卡砍价能砍多少(拼多多砍价开通月卡一般能砍掉多少)

    拼多多月卡砍价能砍多少(拼多多砍价开通月卡一般能砍掉多少)

  • 淘宝号降权是什么意思(淘宝号降权是什么意思在哪里查看)

    淘宝号降权是什么意思(淘宝号降权是什么意思在哪里查看)

  • word无法复制粘贴怎么回事(word无法复制粘贴但可以打字)

    word无法复制粘贴怎么回事(word无法复制粘贴但可以打字)

  • wps怎么把几个文件放在一个文件夹(wps怎么把几个文档合并一个文档里面)

    wps怎么把几个文件放在一个文件夹(wps怎么把几个文档合并一个文档里面)

  • 为什么情侣空间点不动(为什么情侣空间解除了还是有标志)

    为什么情侣空间点不动(为什么情侣空间解除了还是有标志)

  • oppo怎么设置微信红包提示音(oppo怎么设置微信加密码怎么设置)

    oppo怎么设置微信红包提示音(oppo怎么设置微信加密码怎么设置)

  • 联想C940与S940的区别(联想yogac940和s940的区别)

    联想C940与S940的区别(联想yogac940和s940的区别)

  • 照片怎么弄时间(照片怎么弄时间水印上去)

    照片怎么弄时间(照片怎么弄时间水印上去)

  • word里面除号怎么打(word里除号怎么输入)

    word里面除号怎么打(word里除号怎么输入)

  • 苹果耳机丢失如何找回(苹果耳机丢失如何查找手机位置)

    苹果耳机丢失如何找回(苹果耳机丢失如何查找手机位置)

  • 华为vog一al10是什么型号(华为vog_al10多少钱)

    华为vog一al10是什么型号(华为vog_al10多少钱)

  • 为什么微信发送时间不对(为什么微信发送视频很慢)

    为什么微信发送时间不对(为什么微信发送视频很慢)

  • 华为p30pro呼吸灯在哪(华为p30pro有呼吸灯)

    华为p30pro呼吸灯在哪(华为p30pro有呼吸灯)

  • 651错误代码怎么解决?(651错误是怎么回事)

    651错误代码怎么解决?(651错误是怎么回事)

  • 【机器学习】支持向量回归

    【机器学习】支持向量回归

  • 无票收入怎么做账,要交税吗,填入增值税申报表
  • 回购股票不注销没有意义
  • 失业稳岗补贴怎么记账
  • 个体工商户属于非法人组织吗
  • 用友t3凭证日期怎么自动排序
  • 收到租赁费发票的账务处理
  • 辅导期纳税人会计处理
  • 企业库存现金的限额是由( )核定的
  • 烟叶收购方案制定步骤
  • 个体户如何做零申报
  • 留存收益转增资本有什么好处
  • 进货方的现金折扣怎么处理?
  • 税控盘抵税账务处理
  • 企业购入物资合同模板
  • 设备安装增值税适用税率
  • 电子发票开错怎么办
  • 开增值税票需要对方什么资料
  • 个体工商户地税没有申报罚款多少
  • 个人取得下列各项所得须自行申报纳税的有
  • 公司从事房地产有什么好名字
  • 企业残疾人保障金
  • 暂估成本冲回之后成本变为负的
  • 房产转让的房产税怎么算
  • 会计记账凭证的填制
  • 预收销货款属于负债吗
  • VM虚拟机怎么安装网心容器
  • 增值税专用发票电子版
  • 如何更改文件的创建时间
  • 隐藏资源管理器窗口
  • pull-hi
  • 多收不用退的货物怎么办
  • 发票未报送怎么回事
  • 最大的数码相机是多少寸
  • 应纳税所得税计算公式
  • 股权收购账务处理方法
  • 工程项目成本费用的分类有哪些?
  • 对个别报表中处置收益的归属期间进行调整
  • 记账软件的作用
  • php确认弹窗
  • php和ajax用哪个调用数据
  • 协会收到的政府奖励会计处理
  • 主营业务收入借贷方向
  • 项目部署计划
  • 这可能是最好的144平米小平层户型
  • java代理有几种方式
  • pdca安全管理方法
  • 增值税专用发票抵扣期限
  • 差额征税的几种情况
  • 英文描述什么是利润表
  • 公司购买理财产品
  • 现金折扣什么时候冲减收入
  • 织梦cms不更新了吗
  • 在access中,数据库对象导出到另一数据库中
  • 普票不能抵扣要他干嘛
  • 生产成本结转分录是什么
  • 决算清理期和库款报解整理期
  • 出口视同内销账务处理?
  • 进出口总额用什么字母表示
  • 库存商品核算流程是怎样的
  • sql server怎么复制表
  • MySql 5.6.14 winx64配置方法(免安装版)
  • win8windows设置在哪里
  • Ubuntu 14.04/14.10如何安装记账软件HomeBank?
  • linux的安装
  • linux的压缩包
  • os x 10.11 el capitan中文版上手体验评测
  • 笔记本不支持win8
  • linux允许ping
  • pap是什么文件
  • 找不到config/index taro
  • 为什么要建立文明城市
  • python中print函数的end参数
  • js弹出小窗口
  • jquery判断是否有某个class
  • 对象类型怎么填
  • android 加密算法
  • 天津武清房管局电话
  • 所有的酒店真的有摄像头吗
  • 云南省税务局召开的会议
  • 7月税务征收期
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设