(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束

news2024/9/17 9:15:12

(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束


  • 需求:按勾选的顺序给后端传值

  • 难点:在 Element UI 的 el-cascader 组件中,默认的行为是根据数据的层级结构来显示选项,用户的选择也会基于这种层级结构,el-cascader 本身并不直接支持自定义的显示顺序。


效果:

在这里插入图片描述


实现:

// html
<el-cascader
	v-model="selectedOptions"
    :options="options"
    :props="props"
    clearable>
</el-cascader>

// js
export default {
	data(){
		return {
			selectedOptions:[],// 绑定的数组
			sortSelectedOptions:[],// 排好序的数组
			// props: { multiple: true },// 原始获取到的value是数字,不方便对比
			props: { multiple: true, value: 'label', label: 'label' },// 指定value值取label
	        options: [{
	          value: 1,
	          label: '东南',
	          children: [{
	            value: 2,
	            label: '上海',
	            children: [
	              { value: 3, label: '普陀' },
	              { value: 4, label: '黄埔' },
	              { value: 5, label: '徐汇' }
	            ]
	          }, {
	            value: 7,
	            label: '江苏',
	            children: [
	              { value: 8, label: '南京' },
	              { value: 9, label: '苏州' },
	              { value: 10, label: '无锡' }
	            ]
	          }, {
	            value: 12,
	            label: '浙江',
	            children: [
	              { value: 13, label: '杭州' },
	              { value: 14, label: '宁波' },
	              { value: 15, label: '嘉兴' }
	            ]
	          }]
	        }, {
	          value: 17,
	          label: '西北',
	          children: [{
	            value: 18,
	            label: '陕西',
	            children: [
	              { value: 19, label: '西安' },
	              { value: 20, label: '延安' }
	            ]
	          }, {
	            value: 21,
	            label: '新疆维吾尔族自治区',
	            children: [
	              { value: 22, label: '乌鲁木齐' },
	              { value: 23, label: '克拉玛依' }
	            ]
	          }]
	        }]
		}
	}
},
// 监听绑定数组
watch:{
	selectedOptions: {
      handler(newVal, oldValue) {
        if (newVal.length > oldValue.length) {
          // 找到新增的项
          const newItems = this.findNewItems(oldValue, newVal)
          // 添加到排序数组中
          this.sortSelectedOptions.push(...newItems)
        }
        if (newVal.length < oldValue.length) {
          // 找到删除的项
          const newItems = this.findNewItems(newVal, oldValue)
          // 从排序数组中过滤掉被删除的项
          this.sortSelectedOptions = this.sortSelectedOptions.filter(item => {
            return !newItems.map(e => JSON.stringify(e)).includes(JSON.stringify(item))
          })
        }
        console.log('this.sortSelectedOptions', this.sortSelectedOptions)
      },
      deep: true
    }
},

methods:{
	findNewItems(oldList, newList) {
      // 创建一个映射表来快速检查旧列表中的项
      const oldItemsMap = new Map()
      for (const item of oldList) {
        // 使用JSON.stringify作为唯一标识符(注意:如果子数组顺序重要且可能不同,这种方法可能不适用)
        oldItemsMap.set(JSON.stringify(item), true)
      }
      // 遍历新列表,检查哪些项不在旧列表中
      const newItems = []
      for (const item of newList) {
        if (!oldItemsMap.has(JSON.stringify(item))) {
          newItems.push(item)
        }
      }
      return newItems
    },
}




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

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

相关文章

SQL必知必会

SQL必知必会 一些SQL知识&#xff0c;出自极客时间陈旸老师《SQL必知必会》 https://time.geekbang.org/column/intro/100029501 基础 视图 视图作为一张虚拟表&#xff0c;帮我们封装了底层与数据表的接口。它相当于是一张表或多张表的数据结果集。视图的这一特点&#x…

【C/C++】C语言到C++的入门知识点(主要适用于C语言精通到Qt的C++开发入门)

【C/C】C语言到C的入门知识点&#xff08;主要适用于C语言精通到Qt的C开发入门&#xff09; 文章目录 C语言与C的不同C中写C语言代码C语言到C的知识点Qt开发中需要了解的C基础知识namespace输入输出字符串类型class类构造函数和析构函数&#xff08;解析函数&#xff09;类的继…

20240801 每日AI必读资讯

&#x1f50a;OpenAI向ChatGPT Plus用户推出高级语音模式 - 只给一小部分Plus用户推送&#xff0c;全部Plus用户要等到秋季 - 被选中的Alpha 测试的用户将收到一封包含说明的电子邮件&#xff0c;并在其移动应用中收到一条消息。 - 同时视频和屏幕共享功能继续推出&#xff…

【论文速读】| MoRSE:利用检索增强生成技术填补网络安全专业知识的空白

本次分享论文&#xff1a;MoRSE: Bridging the Gap in Cybersecurity Expertise with Retrieval Augmented Generation 基本信息 原文作者&#xff1a;Marco Simoni, Andrea Saracino, Vinod Puthuvath, Maurco Conti 作者单位&#xff1a;意大利比萨国家研究委员会信息学与…

2024 年最新 windows 操作系统搭建部署 nginx 服务器应用详细教程(更新中)

nginx 服务器概述 Nginx 是一款高性能的 HTTP 和 反向代理 服务器&#xff0c;同时是一个 IMAP / POP3 / SMTP 代理服务器。Nginx 凭借其高性能、稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。 浏览 nginx 官网&#xff1a;https://nginx.org/ Nginx 应用场景 静态…

最新保姆级教程使用WildCard开通Claude3升级ChatGPT4.0(2024.8)

如何使用 WildCard 服务注册 Claude3 随着 Claude3 的震撼发布&#xff0c;最强 AI 模型的桂冠已不再由 GPT-4 独揽。Claude3 推出了三个备受瞩目的模型&#xff1a;Claude 3 Haiku、Claude 3 Sonnet 以及 Claude 3 Opus&#xff0c;每个模型都展现了卓越的性能与特色。其中&a…

【rockyLinux·9.4】安装 java jdk

一、安装 java 1.选择版本 yum list | grep jdk各个版本之间的区别&#xff1a; 2.选择了&#xff1a;java-17-openjdk-devel.x86_64&#xff08;开发者版本&#xff09;&#xff0c;开始安装 建议安装在 /usr/local 这个目录下&#xff0c;可以创建一个 app 目录来收录它…

如何高情商处世:小李的职场智慧

如何高情商处世&#xff1a;小李的职场智慧 在职场这片大海中&#xff0c;我们都是游泳者&#xff0c;有的人轻松自如&#xff0c;而有的人却挣扎不已。今天&#xff0c;我要和大家分享一个关于如何用高情商处世的故事&#xff0c;它来自于我的侄子小李。 初出茅庐的小李 小…

SAP BW系统表分享第一弹

有时候想要查看BW系统中存在了多少的表时&#xff0c;包含SAP以及自建表&#xff0c;这个时候我们怎么去找呢&#xff1f; 不要慌&#xff0c;BW系统中也有其对应系统表来存储表对应的信息的&#xff0c;存储所有表信息的是DD02V或者DD02VV&#xff0c;我比较推荐使用DD02VV&a…

CSS实现图片边框酷炫效果

一、前言 我们在浏览一些网页时&#xff0c;经常会看到一些好看酷炫的元素边框效果&#xff08;如下图&#xff09;&#xff0c;那么这些效果是怎么实现的呢&#xff1f;我们知道&#xff0c;一般的边框&#xff0c;要么是实线&#xff0c;要么是虚线&#xff08;点状&#xf…

python随机选取数据算法

python随机选取数据算法&#xff1a; 使用sample方法 pandas的sample方法是最常用的方法来随机选取DataFrame中的数据。可以通过设置frac参数来指定选取的比例。 代码&#xff1a; import pandas as pd# 创建一个示例DataFrame data {A: range(1, 101),B: range(101, 201) }…

大厂linux面试题攻略四之Linux网络服务(一)

一、Linux网络服务-SSH服务 1.哪些设置能够提升SSH远程管理的安全等级? ssh的登录验证方式 ssh的登录端口和监听设置&#xff1a; 配置文件: /etc/ssh/sshd_config #Port 22 #ssh服务默认监听端口 #ListenAddress 0.0.0.0 #ssh服务…

配置静态IP,解决在虚拟机装Linux没有网络的问题

配置静态IP&#xff0c;解决在虚拟机装Linux没有网络的问题 问题 VMware中的虚拟机有时会随着外部宿主机的IP变化而变化&#xff0c;导致使用起来很麻烦。最直接的就是XShell连接不上&#xff0c;其次就是项目中的配置文件中写了关于虚拟机的ip地址&#xff0c;比如redis mys…

编程小白如何成为大神?大学新生的最佳入门攻略

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

【视频讲解】Python用LSTM、Wavenet神经网络、LightGBM预测股价

原文链接&#xff1a;https://tecdat.cn/?p37184 原文出处&#xff1a;拓端数据部落公众号 分析师&#xff1a;Yuyan Ye 在金融科技的浪潮中&#xff0c;量化投资方法以其数据驱动和模型导向的特性&#xff0c;日益成为资本市场分析的重要工具。 特别是&#xff0c;长短期…

2024最全的软件测试面试八股文【附答案+文档】

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 前言 最近有很多粉丝问我&#xff0c;有什么方法能够快速提升自己&#xff0c;通过阿里、腾讯、字节跳动、京东等互联网大厂的面试&#xff0c;我觉得短时间提升…

美容院会员管理系统|美业收银系统源码-已注册的客户,如何异店添加?

情景举例说明&#xff1a; 客户“张三”在A店已注册、消费&#xff0c;然后又到B店去消费。如何通过APP端和PAD端添加客户&#xff1f; ▶▶▶ • 在“客户管理”或“收银台”添加客户区域 • 搜索客户注册手机的完整手机号找到该客户 • 将其添加到本店即可

JavaScript 和 HTML5 Canvas实现图像绘制与处理

前言 JavaScript 和 HTML5 的 canvas 元素提供了强大的图形和图像处理功能&#xff0c;使得开发者能够在网页上创建动态和交互式的视觉体验。这里我们将探讨如何使用 canvas 和 JavaScript 来处理图像加载&#xff0c;并在其上进行图像绘制。我们将实现一个简单的示例&#xf…

揭秘住宅IP代理:原理、用途以及应用分析

在大数据时代&#xff0c;互联网成为我们生活与工作中不可或缺的一部分。然而&#xff0c;随着网络环境的日益复杂&#xff0c;隐私保护、网络访问限制等问题也逐渐凸显&#xff1b;以及跨境业务蓬勃发展。在这样的背景下&#xff0c;住宅IP代理作为一种技术解决方案&#xff0…

6、指针

6 指针 6.1 指针的本质&#xff08;间接访问的原理&#xff09; 指针&#xff1a;变量的地址 指针变量&#xff1a;用一个变量来存放另一个变量的地址&#xff0c;该变量即为指针变量 指针变量占内存大小&#xff0c;32位程序占4字节&#xff0c;64位占8字节 取地址操作符、取…