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

  • 路由器ipv6怎么设置(路由器ipv6怎么设置网速最快)

    路由器ipv6怎么设置(路由器ipv6怎么设置网速最快)

  • 淘宝延长收货后还可以退货吗(淘宝延长收货后运费险还能用吗)

    淘宝延长收货后还可以退货吗(淘宝延长收货后运费险还能用吗)

  • 找回微信扫过的二维码(怎么查找微信扫过的人怎么找不到了)

    找回微信扫过的二维码(怎么查找微信扫过的人怎么找不到了)

  • 电脑怎么重命名照片(电脑怎么重命名图片)

    电脑怎么重命名照片(电脑怎么重命名图片)

  • 为什么抖音头像有个抖音符号(为什么抖音头像换了别人看的还是原来那张)

    为什么抖音头像有个抖音符号(为什么抖音头像换了别人看的还是原来那张)

  • mini4上市时间(ipad mini4上市时间)

    mini4上市时间(ipad mini4上市时间)

  • iphonexsmax黑边几毫米(苹果xs max黑边多宽)

    iphonexsmax黑边几毫米(苹果xs max黑边多宽)

  • 来电管家业务什么意思(来电管家有用吗)

    来电管家业务什么意思(来电管家有用吗)

  • 文件夹为什么不能发送(文件夹为什么不能复制)

    文件夹为什么不能发送(文件夹为什么不能复制)

  • 外卖虚拟号码怎么发短信(外卖虚拟号码怎么弄)

    外卖虚拟号码怎么发短信(外卖虚拟号码怎么弄)

  • 为什么weverse安装后打不开(weverse为什么闪退)

    为什么weverse安装后打不开(weverse为什么闪退)

  • 一体机外置显卡怎么装(一体机外置显卡怎么连线)

    一体机外置显卡怎么装(一体机外置显卡怎么连线)

  • 小米note8和note8pro的区别(小米note8和note9哪个好)

    小米note8和note8pro的区别(小米note8和note9哪个好)

  • vivoy85a屏幕多大尺寸(vivo y85a屏幕尺寸)

    vivoy85a屏幕多大尺寸(vivo y85a屏幕尺寸)

  • word添加目录样式(word目录)

    word添加目录样式(word目录)

  • oppo来电闪光灯怎么设置(OPPO来电闪光灯)

    oppo来电闪光灯怎么设置(OPPO来电闪光灯)

  • 淘宝怎么换个人背景图片(淘宝怎么换个人工客服聊天)

    淘宝怎么换个人背景图片(淘宝怎么换个人工客服聊天)

  • 华为地图什么时候可以用(华为地图什么时候可以下载)

    华为地图什么时候可以用(华为地图什么时候可以下载)

  • ppt没保存怎么恢复(ppt没保存怎么恢复到桌面)

    ppt没保存怎么恢复(ppt没保存怎么恢复到桌面)

  • 水凝膜有气泡多久消失?(水凝膜有气泡多怎么回事)

    水凝膜有气泡多久消失?(水凝膜有气泡多怎么回事)

  • vivo存储卡怎么装(vivo手机存储卡怎么用)

    vivo存储卡怎么装(vivo手机存储卡怎么用)

  • 闲鱼怎么加入鱼塘(闲鱼怎么加入鱼小铺)

    闲鱼怎么加入鱼塘(闲鱼怎么加入鱼小铺)

  • 商户收款异常怎么解决(商家收款码出现异常)

    商户收款异常怎么解决(商家收款码出现异常)

  • Linux系统下pv命令的一些使用技巧小结(linux -pv)

    Linux系统下pv命令的一些使用技巧小结(linux -pv)

  • 在win10中,经常提示虚拟内存不足的原因是什么?(在windows中,经常有一些菜单选项呈暗灰色)

    在win10中,经常提示虚拟内存不足的原因是什么?(在windows中,经常有一些菜单选项呈暗灰色)

  • 个人独资企业税种有哪些
  • 进项税跟增值税
  • 小规模免征增值税会计处理
  • 房地产企业土地出让金抵减销项税额
  • 蓝字发票和红字一样吗
  • 建筑企业的成本
  • 承兑汇票能直接兑换吗
  • 电子普通发票重新开
  • 残疾人保障金计算方法
  • 通过网络手段获取用户行为的方法
  • 商品房的销售方式有哪些
  • 上月未计提税金,下月怎么做分录
  • 垫资后转出的会计分录怎么写?
  • 接受捐赠的增值税计入利润总额吗
  • 所得税季报固定资产加速折旧表资产原值
  • 虚开发票可以做进项税额转出分录吗?
  • 小规模纳税人实行简易征收办法
  • 报税申报不了
  • 新企业所得税法规定的企业包括
  • 不动产所占份额
  • 其他应付款需要做预算会计吗
  • 中小企业代扣代缴增值税抵扣时限
  • 土地增值税清算方法与技巧
  • win7电脑加入域
  • 广告业年终总结
  • 专项资金支出时能直接转出吗
  • 薪酬总额包干什么意思
  • php中数组的概念
  • lsalss.exe
  • 代扣代缴个税手续费返还政策
  • avgserv9.exe是什么进程 avgserv9进程的详细介绍
  • php b/s
  • 个人所得税有哪些可以减免的项目
  • web网页制作软件
  • 理财收益如何计税
  • php array_slice
  • php数组实现
  • php运用
  • 应付款项怎么填列
  • python如何编写函数
  • 电子客票行程单怎么获取
  • 总包缴税
  • 发票未认证跨月怎么办
  • 无偿调入固定资产怎么入账
  • 税款所属期止
  • 发票已交税如何退税
  • 同一控制下合并报表恢复留存收益
  • 实际成本法如何核算
  • 固定资产的期末余额反映固定资产原值的结余额
  • 融资租入固定资产的改建支出
  • 收到捐赠的账务处理和涉税处理
  • 购进材料,已付,材料尚未验收入库
  • 房租费一次不给完怎么写收条
  • 分月摊销怎么处理
  • 购买超市购物卡有优惠吗
  • 加盟创业成功案例分析
  • 一般纳税人增值税优惠政策2023
  • 个体工商户个人经营所得税税率表
  • sqlserver存储过程if语句
  • 如何解决windows10数据放到国外进行处理
  • ubuntu系统安装教程详细
  • centos配置vps
  • wsinspector.exe是什么进程
  • centos下安装gcc
  • win10系统中怎么安装安卓应用
  • win8无法更新到win10
  • win10开机多了一个账户怎么删除
  • css清除浮动方法有哪几种
  • linux rpm -i
  • 如何用bat批量删除文件
  • python中列表常用方法
  • cocos2dx4.0教程
  • Node.js中的全局变量有哪些
  • android的数据储存方式
  • javascript $符号
  • 税务干部转正工作总结
  • 增值税差额征税什么意思
  • 印花税应税凭证数量是什么意思
  • 年报汇算清缴怎么做
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设