动态加载 回显_ElementUI cascader级联动态加载及回显

09a5f3e4c247aa4d362d471e7bd3b2be.png

先看图,你是否也遇到这个需求?

54f4cb142c22dc23c7f0d42ac0af090b.png

如果你正在焦头烂额,无脑抓瞎,那么你来对地方了,因为我将给你一个简单易懂的实现方案。

我也在网上翻了无数页答案,也照着别人的代码和思路尝试了,事实上并不能解决我这个棘手的问题。

级联下拉选多选、懒加载、数据回显,尽管 ElementUI 已经很贴心,文档写的也很好。

前两个很容易就可以实现,可是唯独数据回显被遗忘了,似乎忘记了数据回显应该是级联选择器必备的功能,很遗憾,需要我们自己去实现。

根据文档我们可以很容易配置一个级联组件,并且级联选择器的值应该是一个二维数组。

<el-cascaderv-model="updateForm.category"separator="-":props="cascaderProps"
></el-cascader>

然后配置cascaderProps数据如下

cascaderProps: {multiple: true,checkStrictly: true,lazy: true,lazyLoad: this.lazyLoad,value: "id",label: "name",leaf: "leaf"
}

如果照做了,那么恭喜你,已经实现了一半的需求了,不过你很快就会发现,编辑的时候级联选择器的数据是空的。

不过组件给我们提供了一个参数options,如果级联选择的模板是完整的,那就可以很容易回显这个数组,可是现在的选择模板是懒加载的,那么就需要根据updateForm.category 拼出一个备选模板就可以了。

问题的关键就在于options模板如何生成,这个问题困恼了我好几天,最后也是灵感加成,十分钟就撸完了。

先看一段代码,然后分析下思路。

//编辑类目async updateBtnClick(node, data) {this.node = node.parent;
this.updateForm.id = data.id;
this.updateForm.name = data.name;this.updateForm.level = ["一级类目", "二级类目", "三级类目", "四级类目"][node.level - 1];this.updateForm.parent_name = node.level > 1 ? node.parent.data.name : "";this.updateForm.category = data.category || [];// this.updateForm.category_name = data.category_name || [];this.category_array = Array.from(new Set(this.updateForm.category.join(",").split(",")));this.initOptions();},//初始化categoryasync initOptions() {let req = {parent_id: 0,category_id: this.node.id || 0};let res = await this.$api.getFrontcategoryTemp(req);if (res.error_code == 0 && res.data && res.data.list) {this.cascaderOptions = await this.loadOptions(res.data.list || []);this.updateForm.visible = true;}},//递归加载子类目async loadOptions(category) {let array = [];for (let i = 0; i < category.length; i++) {if (category[i].child_count > 0 &&this.category_array.includes(category[i].id + "")) {let req = {parent_id: category[i].id,category_id: this.node.id || 0};let res = await this.$api.getFrontcategoryTemp(req);if (res.error_code == 0 && res.data && res.data.list) {category[i].children = await this.loadOptions(res.data.list);}}array.push(category[i]);}return array;}

解决方案的思路:

1、将需要回显的数据二维数组平铺成一维数组并去重。

2、初始化备选项的一级下拉选。

3、遍历一级下拉选判断是否需要加载子类目。

4、递归遍历下拉选。

这个方案确实也是非常容易理解的,与我们手动点击加载子集类似。

最终的组件配置如下:

<el-cascaderv-model="updateForm.category"separator="-":options="cascaderOptions":props="cascaderProps"
></el-cascader>

好了,希望你能搜到我这个方案,最好尽快搜到。

ElementUI 版本2.13.2。

----

再来更新一点,算是优化吧。

针对第一步

1、将需要回显的数据二维数组平铺成一维数组并去重。

可以做点优化,二维数组

[[1,10,101],[1,11,115],[2,20,201,2014]]
//可以去掉最后一位
[[1,10],[1,11],[2,20,201]]
//这样可以减少很多请求

减少不必要的资源开销。

-------------再来更新一点-------------

因为搜索的问题,所以重新封装了组件,然后重新缕了一下思路,实现了更优雅的,懒加载回显和搜索,以及搜索回显的问题。

UI如下

29681dbb6622b4dc43578505c5610b07.png

准备打个包,方便以后需要的人吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单片机的四种烧写方式

参考&#xff1a;单片机的四种烧写方式 作者&#xff1a;爱学习的小王呀 发布时间&#xff1a;2020-11-27 20:05:12 网址&#xff1a;https://blog.csdn.net/hongliwong/article/details/110245095?spm1001.2014.3001.5501 参考&#xff1a;单片机3种烧录方式解析 作者&#x…

关于驰骋表单引擎中字段扩展设置对文本框Pop窗体返回值的升级说明 2012/11/13...

为什么80%的码农都做不了架构师&#xff1f;>>> 关于驰骋表单引擎中字段扩展设置对文本框Pop窗体返回值的升级说明 2012/11/13 现有功能: 以前版本仅支持自己定义url&#xff0c;返回值到文本框上. 升级功能: 1, 增加了可以自己定义数据源模式&#xff0c;数据源可…

中兴f650 2.0.3 固件降级_手机资讯:如何升级iOS12.1.4正式版iOS12.1.4正式版升降级教程...

如今使用IT数码设备的小伙伴们是越来越多了&#xff0c;那么IT数码设备当中是有很多知识的&#xff0c;这些知识很多小伙伴一般都是不知道的&#xff0c;就好比最近就有很多小伙伴们想要知道如何升级正式版正式版升降级教程&#xff0c;那么既然现在大家对于如何升级正式版正式…

C# 加密解密类

一. MD5 1 防止看到明文 数据库密码&#xff0c;加盐(原密码固定字符串&#xff0c;然后再MD5/双MD5) 2 防篡改 3 急速秒传(第一次上传文件&#xff0c;保存md5摘要&#xff0c;第二次上传检查md5摘要) 4文件下载(防篡改&#xff0c;官方发布的时候给一个md5摘要&#xf…

请求solr服务器未响应,solr与tomcat整合

一、准备工作&#xff1a;我使用的是tomcat7.0,solr-4.8.1solr-4.8.1解压后是这样的。二、开始配置了1、首先要创建两个文件夹。home和server。我是创建在与solr-4.8.1同一根目录上的。D:\work-tool\server\solr\home和D:\work-tool\server\solr\server2、从solr-4.8.1\dist复制…

WeMos下实现小车避障与手机控制

参考&#xff1a;WeMos下实现小车避障与手机控制 作者&#xff1a;爱学习的小王呀 发布时间&#xff1a;2020-10-02 10:17:45 网址&#xff1a;https://blog.csdn.net/hongliwong/article/details/108900048?spm1001.2014.3001.5501 目录前言一、项目软硬件平台及开发环境1.硬…

苹果手机耗电快_iPhone12用5G耗电快,苹果回应

原标题&#xff1a;iPhone12用5G耗电快&#xff0c;苹果回应北京头条客户端10月24日消息&#xff0c;针对有媒体测试苹果iPhone12开启5G模式下&#xff0c;用电量提升的问题&#xff0c;苹果iPhone营销副总裁Kaiann Drance回应称&#xff0c;iPhone12 增加的智能数据模式可以平…

Ubuntu12 10下安装JDK7

为什么80%的码农都做不了架构师&#xff1f;>>> Ubuntu12 10版本下&#xff0c;不再预装JDK&#xff0c;包括OpenJdk&#xff0c;所以我们要从Oracle官网上下载java7的压缩包&#xff0c;选择适合自己电脑的安装包&#xff0c;我选的是jdk-7u9-linux-i586.tar.gz。…

neo4j python 算法_python操作neo4j简单实例

一&#xff1a;neo4j是什么neo4j:Neo4j是一个高性能的,NOSQL图形数据库,有关于更多neo4j的资料出门右拐二:python操作neo4j的实现python中neo4j的操作可以利用驱动包或者py2neo包&#xff0c;我采用py2neo第三方包实现以下简单功能&#xff0c;先建立一个neo4j的链接对于neo4j的…

尚硅谷的 ediary 笔记_干货分享 | 硅谷创新加速营第五讲教您合理规划融资需求 降低投资风险...

5月26日上午&#xff0c;康佳之星携手青岛蓝谷管理局、斯坦福青岛研究院、海尔海创汇联合举办的第二届硅谷创新加速营第五讲顺利完成。斯坦福青岛研究院董事长的Claude Leglise先生做客直播间&#xff0c;为现场创业者、企业家讲授创业之路必修课&#xff1a;企业财务规划。本讲…

虚拟机的服务器黑屏,VMware Workstation 14运行虚拟机黑屏解决办法

VMware Workstation 14运行虚拟机黑屏解决办法升级到VMware workstation 14 pro后所有虚拟系统全部黑屏&#xff0c;VMware 14 黑屏&#xff0c;VMware Workstation 14运行虚拟机黑屏是什么原因步骤如下&#xff0c;步骤如下&#xff0c;1、以管理员身份运行命令提示符(cmd.exe…

c++ 冒泡排序_干货|python笔记1-冒泡排序

面试的时候经常有面试官喜欢问如何进行冒泡排序&#xff1f;这个问题相信可以难倒一批的同学&#xff0c;本篇就详细讲解如何用python进行冒泡排序。基本原理01概念&#xff1a;冒泡排序是一种交换排序&#xff0c;它的基本思想是&#xff1a;两两比较相邻记录的关键字&#xf…

双链表嵌套的简单学生信息管理系统

参考&#xff1a;实现双链表嵌套的简单学生信息管理 作者&#xff1a;三速何时sub20 发布时间&#xff1a; 2020-07-20 10:44:40 网址&#xff1a;https://blog.csdn.net/weixin_44234294/article/details/107458155?spm1001.2014.3001.5501 参考&#xff1a;双链表嵌套实现简…

scrapy如何指定生成python3的项目_如何把阿里图标库的图标生成代码并应用于自己的项目...

有时候需要用很多图标去完成一定的页面效果和工作展现&#xff0c;框架内置的图标可能满足不了我们的需求&#xff0c;有个很好的图标库想必大家都知道-----就是阿里图标库。那么我们如何才能够把阿狸图标库的图标引用到自己的项目中呢&#xff1f;耐着性子往下看吧&#xff01…

win10系统无线服务器出错,win10系统中Wi-Fi证书错误的解决方法

wifi想必大家都很熟悉吧&#xff0c;这是很多用户们喜欢的无线网络&#xff0c;但是有时候会碰到一些wifi错误&#xff0c;比如有不少win10系统用户遇到wifi证书错误的情况&#xff0c;这样就会导致用户无法连接到网络或访问某个网站&#xff0c;该怎么处理呢&#xff0c;现在就…

subprocess模块

subprocess模块 subprocess可以根据命令的结果&#xff0c;正确的或者错误的分开存放 存放正确的结果 # import subprocess # objsubprocess.Popen(tasklist,shellTrue, # stdoutsubprocess.PIPE, # stderrsubprocess.PIPE, # …

通过EIGRP的 variance 参数实现非等价负载均衡

实验拓扑如上图所示我们使用EIGRP协议做通全网实现R1 的1.1.1.1 可以和 R4的4.4.4.4 进行通信 此时我们查看R1的路由表&#xff0c;查看去往4.4.4.4 的路由条目 通过拓扑图我们看到 R1去往4.4.4.4 是有两条路径的也就是 R1-R2-R4 和 R1-R3-R4 &#xff0c;但是在路由表中&…

echarts 获取点击的y轴数值_用 Python 自动获取NBA现役球员的职业生涯数据曲线

前言作为一个看了多年篮球的 NBA球迷&#xff0c;一直在想用 python 和篮球一起来写点什么加上最近在学习 pyecharts &#xff0c;所以就有了下面这篇文章&#xff1a;根据输入的球队和球员名字&#xff0c;自动生成该球员职业生涯数据曲线图&#xff01;✨ 效果火箭哈登勇士格…

重装系统后dns服务器未响应,dns服务器未响应,小编教你dns服务器未响应怎么解决...

连网时&#xff0c;出现连不上网络&#xff0c;用Windows网络诊断&#xff0c;诊断出的结果是“DNS服务器未响应”&#xff0c;遇到这样情况该怎样解决&#xff1f;在使用window系统的电脑上网过程中&#xff0c;常常会遇到DNS服务器未响应的问题&#xff0c;怎么办&#xff1f…

VMware虚拟机启动错误(正在被占用、内部错误)等问题

参考&#xff1a;VMware虚拟机启动错误&#xff08;正在被占用、内部错误&#xff09;等问题 作者&#xff1a;扫地僧- 发布时间&#xff1a;2019-09-20 15:02:55 网址&#xff1a;https://blog.csdn.net/weixin_42119153/article/details/101060183?spm1001.2014.3001.5501 目…