位置: 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图片转文字快捷键)

    qq怎么图片转文字(qq图片转文字快捷键)

  • 屏幕镜像打不开怎么办(屏幕镜像打不开不停的转)

    屏幕镜像打不开怎么办(屏幕镜像打不开不停的转)

  • 小米6通话声音小怎么解决(小米6通话声音小免提声音正常)

    小米6通话声音小怎么解决(小米6通话声音小免提声音正常)

  • 腾讯视频vip可以几个人用(腾讯视频vip可以投屏到电视上看吗)

    腾讯视频vip可以几个人用(腾讯视频vip可以投屏到电视上看吗)

  • 微信背景黑色恢复白色怎么做(微信背景成黑色了怎么调回)

    微信背景黑色恢复白色怎么做(微信背景成黑色了怎么调回)

  • 苹果手机怎么突然充不进去电(苹果手机怎么突然黑屏开不了机)

    苹果手机怎么突然充不进去电(苹果手机怎么突然黑屏开不了机)

  • 手机卡补卡要回本地吗(手机卡补卡回来不想要了,可以注销吗)

    手机卡补卡要回本地吗(手机卡补卡回来不想要了,可以注销吗)

  • 6p与6sp屏幕能互换吗(苹果6sp与6p屏幕可以共用)

    6p与6sp屏幕能互换吗(苹果6sp与6p屏幕可以共用)

  • 被拉黑后打电话是什么声音(被拉黑后打电话对方会收到提示吗)

    被拉黑后打电话是什么声音(被拉黑后打电话对方会收到提示吗)

  • 苏宁直营和自营一样吗(苏宁易购自营和官方直营)

    苏宁直营和自营一样吗(苏宁易购自营和官方直营)

  • 骁龙660是几纳米工艺(骁龙660是几纳米制程)

    骁龙660是几纳米工艺(骁龙660是几纳米制程)

  • vivoy3什么时候出的(vivoy3什么时候上市)

    vivoy3什么时候出的(vivoy3什么时候上市)

  • 浏览器打印页面设置(浏览器打印页面加载不出来)

    浏览器打印页面设置(浏览器打印页面加载不出来)

  • ios13怎么关闭长按(苹果13长按屏幕时长怎么设置)

    ios13怎么关闭长按(苹果13长按屏幕时长怎么设置)

  • 华为p30能拍月亮吗(华为p30por拍月亮)

    华为p30能拍月亮吗(华为p30por拍月亮)

  • 怎么判断微信是否被删除(怎么判断微信是否被盗号)

    怎么判断微信是否被删除(怎么判断微信是否被盗号)

  • 闪充3.0充电效率是多少瓦(闪充3.0和4.0有什么区别)

    闪充3.0充电效率是多少瓦(闪充3.0和4.0有什么区别)

  • 无法验证身份,会话超时(无法验证身份这个apple id没有被激活)

    无法验证身份,会话超时(无法验证身份这个apple id没有被激活)

  • 爱奇艺中怎么彻底删除记录(爱奇艺怎么彻底删除)

    爱奇艺中怎么彻底删除记录(爱奇艺怎么彻底删除)

  • 比旧版 Windows 更难用?吐槽 Win11 的任务栏设计(windows版本比较)

    比旧版 Windows 更难用?吐槽 Win11 的任务栏设计(windows版本比较)

  • 怎么避免Win10一个文件夹卡死无响应关闭所有文件夹?(如何防止win10自动重启)

    怎么避免Win10一个文件夹卡死无响应关闭所有文件夹?(如何防止win10自动重启)

  • 螃蟹不能和什么一起吃,7种不宜和螃蟹一起吃的食物(螃蟹不能和什么食物一起)

    螃蟹不能和什么一起吃,7种不宜和螃蟹一起吃的食物(螃蟹不能和什么食物一起)

  • 免交增值税怎么账务处理
  • 出口退税政策
  • 出口货物退税是指
  • 私车公用协议可以入账吗?
  • 未使用固定资产计提折旧计入
  • 制造费用明细账实例图
  • 实物性投资资产
  • 经营租赁是主营业务收入吗
  • 扣缴外国企业所得税分录
  • 刷信用卡的手续费去哪了
  • 非居民企业的征税范围
  • 基金公司的资本结构
  • 银行手续费跨月怎么计算
  • 想做边销茶生意?增值税可以这样处理
  • 专票当月未认证怎么处理
  • 货代企业所得税优惠政策
  • 个人独资企业是什么意思
  • 小规模纳税人年度不超过500万
  • 固定资产维修费率
  • 企业的其他业务收入
  • 贷款余额反映了什么
  • 讲课费税务发票类别
  • 浙江印花税税率
  • 公司接受承兑汇票的风险
  • 销售折扣单独开票
  • 沙盘模型制作费用
  • 在window操作系统中
  • 王者荣耀干将莫邪技能
  • 母子公司吸收合并优劣势
  • 中秋买东西有讲究吗?
  • winpe怎么安装到u盘
  • 公司作为股东有什么好处
  • 大型绿萝的养殖方法
  • 机动车空白发票作废税务局需要提供说明
  • 资产评估增值是什么意思
  • 暂估入库的商品能出库吗
  • 最详细的世界地图
  • ChatGPT在热门行业的应用场景有哪些
  • addr指令
  • 个体工商户经济类型是内资吗
  • 货币资金包括哪些方面
  • python.mat
  • mysql备份方式有哪些
  • 公司认缴出资怎么交税
  • 一般纳税人招待费扣除标准
  • 小规模未达到起征点如何结转
  • 为什么说运输是实现物流合理化的关键
  • 电力行业规定
  • 员工迟到扣款如何做账
  • 长期待摊费用如何评估
  • 工程预付款计入什么科目
  • 应收账款和应付账款属于什么科目
  • 收到政府土地补偿款账务处理
  • 应付账款的贷方等于预收账款的借方
  • mysql参数表
  • mysql语句的注释符号
  • 雨林木风 u盘
  • 英文版的windows
  • win2008 无线网卡
  • win7系统怎么打开开机启动项
  • win8系统怎么取消屏保
  • 备份linux命令
  • y400加装固态硬盘教程
  • windows xp sp3 vl
  • win8.
  • win7怎连蓝牙
  • unity de
  • js跨域解决方案有哪些
  • 根据安全生产法的规定,生产经营单位
  • android的图片应该放到哪一个目录下面?
  • 怎么看判断
  • nodejs xhr
  • unity移动游戏开发
  • [置顶]JM259194
  • 噩梦 gd
  • Java之CyclicBarrier使用
  • e福州怎么帮家人登记
  • 代建单位资质要求
  • 北京地税局上班时间查询
  • 金税盘白盘如何换纽扣电池
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设