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

  • 华为p30充电插头是多少瓦的(华为p30充电插头多少钱)

    华为p30充电插头是多少瓦的(华为p30充电插头多少钱)

  • macbookpro散热口在哪(macbookpro散热口在哪里)

    macbookpro散热口在哪(macbookpro散热口在哪里)

  • p10是什么意思(混凝土p10是什么意思)

    p10是什么意思(混凝土p10是什么意思)

  • p值为0合理吗(p值为零 表示什么)

    p值为0合理吗(p值为零 表示什么)

  • 小米手机怎么控制空调开关(小米手机怎么控制空调)

    小米手机怎么控制空调开关(小米手机怎么控制空调)

  • 手机电池的电压是几伏(智能手机电池的电压)

    手机电池的电压是几伏(智能手机电池的电压)

  • 按什么可以结束幻灯片放映(按什么可以结束幻灯放映)

    按什么可以结束幻灯片放映(按什么可以结束幻灯放映)

  • 小米10什么时候出来(小米10什么时候停产的)

    小米10什么时候出来(小米10什么时候停产的)

  • ltps是什么屏幕(ltps屏幕优缺点)

    ltps是什么屏幕(ltps屏幕优缺点)

  • 快手可以艾特自己吗(快手艾特自己话题)

    快手可以艾特自己吗(快手艾特自己话题)

  • 蓝牙耳机能和充电盒一起充电吗(蓝牙耳机能充电一晚上吗)

    蓝牙耳机能和充电盒一起充电吗(蓝牙耳机能充电一晚上吗)

  • ipad pro可以接鼠标吗(ipad pro可以接鼠标键盘吗)

    ipad pro可以接鼠标吗(ipad pro可以接鼠标键盘吗)

  • 怎么回到电脑桌面(怎么样回到电脑桌面)

    怎么回到电脑桌面(怎么样回到电脑桌面)

  • 南航飞机wifi怎么用(南航飞机wifi怎么连接)

    南航飞机wifi怎么用(南航飞机wifi怎么连接)

  • vivox21怎么换微信铃声(vivo手机微信怎么换主题皮肤)

    vivox21怎么换微信铃声(vivo手机微信怎么换主题皮肤)

  • 荣耀20青春版上市时间(荣耀20青春版上市时间和价格)

    荣耀20青春版上市时间(荣耀20青春版上市时间和价格)

  • 苹果11手机夜拍怎么用(苹果手机夜拍灯光五光射线)

    苹果11手机夜拍怎么用(苹果手机夜拍灯光五光射线)

  • 手机扰码怎么查(手机扰码查询网站)

    手机扰码怎么查(手机扰码查询网站)

  • 三星固态Qvo和Evo区别(三星固态qvo和evo哪个运行快)

    三星固态Qvo和Evo区别(三星固态qvo和evo哪个运行快)

  • 小爱和小艺买哪个(小爱和小艺对比)

    小爱和小艺买哪个(小爱和小艺对比)

  • oppo微信照片存储位置(oppo微信保存图片不在相册怎么办)

    oppo微信照片存储位置(oppo微信保存图片不在相册怎么办)

  • 京东白条在哪里看(京东白条在哪里开通激活)

    京东白条在哪里看(京东白条在哪里开通激活)

  • 怎么用手机玩云顶(怎么用手机玩云电脑)

    怎么用手机玩云顶(怎么用手机玩云电脑)

  • 华为手机ar测量在哪(华为手机ar测量功能在哪里)

    华为手机ar测量在哪(华为手机ar测量功能在哪里)

  • Win10怎么关闭搜索的网络搜索功能?(Win10怎么关闭搜索框)

    Win10怎么关闭搜索的网络搜索功能?(Win10怎么关闭搜索框)

  • Google Chrome装到D盘的方法(chrome os安装到u盘)

    Google Chrome装到D盘的方法(chrome os安装到u盘)

  • 公司不开票要交工会经费吗
  • 普通电子发票如何冲红
  • 土地出让价款
  • 固定总价合同中,承包人承担的价格风险
  • 外贸公司报关员是干什么的
  • 预交增值税设备租赁是否可抵扣
  • 个人取得什么收入不交税
  • 对方把发票丢了可以重开吗
  • 长期股权投资减值准备
  • 本行给企业发放贷款收回利息分录?
  • 订金退回怎么做账
  • 长期合同收入与应收帐款如何处理?
  • 厂房转让企业所得税计算方法
  • 房产空置怎么判定
  • 境外单位向境内单位提供咨询
  • 补记以前年度往来款
  • 单位给职工租房属于福利政策文件
  • 未按规定订立无固定期限劳动合同
  • 小企业会计准则和企业会计准则的区别
  • 职工教育经费列支范围及标准
  • 外币折算差额计入什么科目
  • 采购发票主要包括什么可以根据什么单据流转生成
  • 个人所得税成本费用怎么算
  • 以前年度有亏损需要交增值税吗为什么
  • 车辆保险车船税怎么计算
  • 兼营销售的销售额的确定
  • 前两个月亏损第三个月盈利所得税怎么计算
  • 如何把私人账户冻结
  • 在建工程明细科目设置
  • 年度应付职工薪酬在科目余额表哪里看
  • thinkphp批量修改
  • ubuntu npm安装
  • 赠送的商品怎么入库 企业会计准则
  • phpqrcode
  • yii2框架结构
  • 固定资产评估如何做
  • php中array怎么用
  • 财务支出表怎么做
  • discuz去除版权
  • 进项税额转出在申报的时候怎么填
  • phpcms教程
  • 企业支付给其他单位劳务费时需要代扣代缴个税吗
  • 科技公司技术服务费税率
  • 小规模做账要做应交税费吗
  • sqlserver解密工具
  • 企业预提的费用计入什么科目
  • 个人所得税部分缴款怎么算
  • 年报中的资产总额怎么计算
  • 员工出差报销补贴政策
  • 建行单位结算卡如何取现金
  • 汽车属于固定资产类吗
  • 企业收到财政补助收入账务处理
  • 小规模纳税人手工帐怎么做
  • 外购入库暂估补差单
  • 向个人借款在现场怎么写
  • 没有关联企业怎么选不了否
  • 应付利润属于什么科目类别
  • mysqlusing
  • mysql5.7主从配置 博客园 my cnblog
  • mac电脑怎么安装ie浏览器
  • linux lftp命令
  • 简单易上手 固态硬盘SSD安装WIN7系统的3种办法
  • win10mobile升级顾问
  • win7更改win10系统要怎么更改
  • PQV2ISECURITY.EXE - PQV2ISECURITY是什么进程 有什么用
  • PQIBrowser.exe是什么进程 PQIBrowser进程查询
  • linux文件权限的设置与修改
  • cocos2dx官方教程
  • exceltype函数的用法
  • input和button按钮合到一起
  • linuxpasswd详解
  • 浅谈python装饰器探究与参数的领取
  • javascript入门教程
  • python如何自动化
  • 税盘换电脑怎么登陆
  • 交通费用包括
  • 信息技术税务分类编码
  • 车辆保险增值税税率是多少
  • 丰田2.0和2.5混动发动机
  • 建设工程勘察设计单位可跨部门跨地区承揽勘察设计业务
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设