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

  • 小米手环2怎么连接手机(小米手环2怎么重新绑定手机)

    小米手环2怎么连接手机(小米手环2怎么重新绑定手机)

  • 华为p30pro耳机插孔在哪里(华为p30pro耳机插上没反应,但能充电)

    华为p30pro耳机插孔在哪里(华为p30pro耳机插上没反应,但能充电)

  • 如何知道自己的微信有没有被,举报(如何知道自己的胸是什么罩杯)

    如何知道自己的微信有没有被,举报(如何知道自己的胸是什么罩杯)

  • 聊信是什么(聊信软件是真是假)

    聊信是什么(聊信软件是真是假)

  • oppo手机闪回键怎么用(oppo手机闪回键在哪)

    oppo手机闪回键怎么用(oppo手机闪回键在哪)

  • 电动车充电器发烫是什么原因(电动车充电器发烫)

    电动车充电器发烫是什么原因(电动车充电器发烫)

  • ios11能不能刷回ios10(苹果能刷回到出厂时候的版本吗)

    ios11能不能刷回ios10(苹果能刷回到出厂时候的版本吗)

  • 抖音怎么注销手机号(抖音怎么注销手机号丢失的账号)

    抖音怎么注销手机号(抖音怎么注销手机号丢失的账号)

  • OPPO k5有夜景模式吗(oppok5夜间模式怎么设置)

    OPPO k5有夜景模式吗(oppok5夜间模式怎么设置)

  • oppor17多少厘米尺寸(oppor17尺寸是多少?)

    oppor17多少厘米尺寸(oppor17尺寸是多少?)

  • 苹果x特效信息怎么发(苹果特效信息对方看的到吗)

    苹果x特效信息怎么发(苹果特效信息对方看的到吗)

  • 怎么检查手机抖屏(怎么检查手机震动)

    怎么检查手机抖屏(怎么检查手机震动)

  • 唯品会退换售后怎么删除(唯品会东西退换货流程)

    唯品会退换售后怎么删除(唯品会东西退换货流程)

  • 旁轴相机和单反的区别(旁轴相机和单反相机哪个适合拍人)

    旁轴相机和单反的区别(旁轴相机和单反相机哪个适合拍人)

  • 美团众包拉黑怎么解封(美团众包拉黑名单了怎么办)

    美团众包拉黑怎么解封(美团众包拉黑名单了怎么办)

  • 淘宝怎么看消费多少(淘宝怎么看消费总额)

    淘宝怎么看消费多少(淘宝怎么看消费总额)

  • 微信即刻视频怎么设置(微信即刻视频怎么保存)

    微信即刻视频怎么设置(微信即刻视频怎么保存)

  • app客户端怎么开发(怎么开启客户端)

    app客户端怎么开发(怎么开启客户端)

  • airpods充电器和手机通用吗(airpods充电器和iphone 11充电器一样吗)

    airpods充电器和手机通用吗(airpods充电器和iphone 11充电器一样吗)

  • 苹果6怎么设置微信加锁(苹果6怎么设置id账号和密码)

    苹果6怎么设置微信加锁(苹果6怎么设置id账号和密码)

  • 抖音里面怎么自己配音乐(抖音里面怎么自己唱歌,怎么消原声)

    抖音里面怎么自己配音乐(抖音里面怎么自己唱歌,怎么消原声)

  • windows10如何设置开机密码(windows10如何设置屏幕保护程序)

    windows10如何设置开机密码(windows10如何设置屏幕保护程序)

  • 渐进式 Web 应用程序介绍(渐进模式的特点)

    渐进式 Web 应用程序介绍(渐进模式的特点)

  • 进项税额转出借方科目
  • 商品流通企业印花税购销合同计税依据
  • 保证人不承担责任(胜诉案例)
  • 营业执照备案登记流程
  • 验收入库材料结转怎么写
  • 企业购房发票可以抵税吗
  • 不开发票的入账怎么办?
  • 小微企业所得税优惠政策最新2022
  • 国库存款利息收入计入哪个预算收入科目
  • 低值易耗品费用包括哪些
  • 转增股如何计算资本公积金?
  • 出售资产时递延所得税怎么处理
  • 以存货抵偿债务结转的相关存货跌价准备
  • 用友t3固定资产计提折旧后没有凭证
  • 增值税开票税额交税差额怎么入账
  • 增值税普通发票和普通发票的区别怎么交税
  • 有限合伙人企业人数
  • 风险纳税人不处理行吗
  • 代开的专票开错了怎么办?
  • 发票联给错怎么办?
  • 小区物业宿舍
  • 最新粮食购销企业税务规定
  • 公司招聘费属于什么科目
  • 电商刷单的收入怎么做凭证?
  • 注册会计师考点分析
  • 工程哪些材料可以做
  • 非绑定账户转入啥意思
  • 分公司会有股东吗
  • 普通股资本成本的计算
  • 高新技术企业取消资格的程序
  • 出口布料有退税吗
  • 1697510614
  • 收到银行存款利息记账凭证怎么写
  • 怎么在安全模式下卸载更新
  • 结转本月各项损益
  • windows7给c盘扩容
  • win7旗舰版如何恢复出厂设置
  • linux小技巧
  • php判断ua
  • Otter Cliffs, Acadia National Park, Maine (© dbimages/Alamy)
  • 什么情况下可以领取失业保险金
  • 以其他方式取得土地使用权
  • eslint vue配置
  • php示例代码大全
  • 政府会计公共基础设施分类
  • 汇算清缴退税分录怎么写
  • 购进商品发生溢余的核算
  • 企业补提以前年度未提的坏账准备
  • 成本会计的岗位要求
  • 金蝶怎么增加职员
  • 出口报关单运费单位怎么填
  • 增值税发票价税合计不能超过多少
  • 应交税费会计分录完整版
  • 物流公司交的保证金可以退吗?
  • 进口海关是国内还是国外
  • 公司开业前期费用谁出
  • 一般纳税人证明在哪里开具
  • 企业不如实申报个税的风险
  • 360天认证期是什么时候发布的
  • 公交充值卡发票能报销吗
  • 残疾人保障金必须交吗
  • 建账时应取得哪些资料
  • mysql三层架构
  • mysql 指定my.cnf
  • linux/unix
  • 请问usb是什么意思啊
  • win传统桌面
  • msng.exe是什么
  • Win10双显卡怎么切换到独立显卡
  • win7怎么删除除了系统盘所有东西
  • windows.prompt用法
  • shell脚本读取ini文件
  • JUnit in android
  • 批处理作用
  • linux shell -s
  • noodoe如何使用
  • javascript教程
  • 在linux安装python
  • 甘肃税务局电子发票怎么开
  • 本季度可以弥补上季度亏损吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设