【修改源码】解决el-select值不匹配导致回显id、只能搜索label无法搜索value的问题

问题一:el-select值不匹配导致回显id(此时只针对单选进行处理)

el-select数据的回显是根据id去匹配值的,最近项目出现了回显id的情况,原因是没有匹配的option

问题场景图如下:

 解决方案

1、方法一:获取完值和下拉数据后,通过方法遍历有没有匹配id的选项,没有就强塞一个选项进去,然后回显

修改代码如下:

setData(list, id, name) {let item = list.some(item => item.id === id)if (item) {list.push({id: id,name: name})}
}
2、方法二:改el-select的源代码
先分析源代码,看为什么会回显id

  • 可以看到红框框住的部分,如果有匹配的值,就返回值,如果没有匹配上,就返回String(value),也就是id
  • 要想回显值,就得把红框框住的部分改掉,计划将newOption改改(代码如下);其中defaultValue就是我们希望回显的值
const label = (!isObject && !isNull && !isUndefined) ? String(value) : ''
const newOption = {value: value,currentLabel: this.defaultValue || label
}

用了一个defaultValue的prop,通过mixin添加defaultValue

新增element-mixin.js,代码如下:

export default Element => {Element.Select.mixins[Element.Select.mixins.length] = {props: {defaultValue: {type: String || Number,default: ''}}}
}

在main.js里面把mixin加上,源码getOption的修改也写这里

import Element from 'element-ui'
import addSelectDefaultValue from '@/mixins/element-mixin'
Element.Select.methods.getOption = function(value) {let optionconst isObject = Object.prototype.toString.call(value).toLowerCase() === '[object object]'const isNull = Object.prototype.toString.call(value).toLowerCase() === '[object null]'const isUndefined = Object.prototype.toString.call(value).toLowerCase() === '[object undefined]'for (let i = this.cachedOptions.length - 1; i >= 0; i--) {const cachedOption = this.cachedOptions[i]const isEqual = isObject? getValueByPath(cachedOption.value, this.valueKey) === getValueByPath(value, this.valueKey): cachedOption.value === valueif (isEqual) {option = cachedOptionbreak}}if (option) return optionconst label = (!isObject && !isNull && !isUndefined)? String(value) : ''const newOption = {value: value,currentLabel: this.defaultValue || label}if (this.multiple) {newOption.hitState = false}return newOption
}
addSelectDefaultValue(Element)
使用方式
<el-select v-model="value" :default-value="'显示错误'" clearable placeholder="请选择"><el-option v-for="item in options":key="item.value":label="item.label":value="item.value"></el-option>
</el-select>
效果图

其它需要关注的问题
  • 每次clear下拉数据的时候也会回显defaultvalue,需要添加clear的回调,将defaultvalu设为""
  • 源码的修改是直接写在main里面的,如果项目三方包是私有化的可以直接改源码用,如果不是建议用patch-package打补丁

问题二:el-select自带的搜索功能只能搜label不能搜value

待补充

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

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

相关文章

Docker的初识

目录 1. 容器技术发展史1.1 Jail 时代1.2 云时代1.3 云原生时代1.3.1 Google & Docker 竞争1.3.2 k8s 成为云原生事实标准 2. 虚拟化和容器化的概念2.1 什么是虚拟化、容器化2.2 为什么要虚拟化、容器化&#xff1f;2.3 虚拟化实现方式2.3.1 应用程序执行环境分层2.3.2 虚拟…

【开源大屏】玩转开源积木BI,从0到1设计一个大屏

积木 BI 重磅推出免费大屏设计器&#xff01;功能超强大&#xff0c;操作超流畅&#xff0c;体验超酷炫。快来体验一下吧。 让我们一起来看一下如何从0到1设计一个大屏。 一、积木BI大屏介绍 积木BI可视化数据大屏 是一站式数据可视化展示平台&#xff0c;旨在帮助用户快速通…

挑食的机器

描述 未来世界有群机器人&#xff0c;他们以阿拉伯数字为食。但其中有个机器人Tom从小到大都不吃质数&#xff0c;为了Tom的健康着想&#xff0c;医生建议Tom有计划的只吃质数&#xff0c;以保证营养均衡。但超市的货架上只有从1到105并且按顺序排列好的实物售卖&#xff0c;所…

HarmonyOS 线性容器ArrayList 常用的几个方法

ArrayList是一种线性数据结构&#xff0c;底层基于数组实现。ArrayList会根据实际需要动态调整容量&#xff0c;每次扩容增加50%。 ArrayList和Vector相似&#xff0c;都是基于数组实现。它们都可以动态调整容量&#xff0c;但Vector每次扩容增加1倍。 ArrayList和LinkedList相…

leetcode230.二叉搜索树中第k小的元素

标签&#xff1a;二叉搜索树&#xff1b;中序遍历 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 小的元素&#xff08;从 1 开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1…

如何在两台 PostgreSQL 服务器之间使用逻辑复制槽进行数据复制

如何在两台 PostgreSQL 服务器之间使用逻辑复制槽进行数据复制 如何在两台 PostgreSQL 服务器之间使用逻辑复制槽进行数据复制环境准备1. 配置主服务器&#xff08;Publisher&#xff09;1.1 修改 postgresql.conf1.2 修改 pg_hba.conf1.3 重启 PostgreSQL 服务1.4 创建逻辑复制…

苹果开发者入门:修复 SwiftUI 中“跑偏的”动画(下)

概述 大家知道 SwiftUI 不仅仅是一款 App 界面布局的超级利器&#xff0c;它同样提供了花样百出的动画和转场机制将 UI 世界点缀的“楚楚动人”。不过&#xff0c;对于苹果开发新入门的秃头小码农来说&#xff0c;使用动画貌似没有想象的那么易如反掌。 如上图所示&#xff0c…

kafka-clients之监控

以生产者为例介绍spring如何整合kafka-clients&#xff0c;micrometer&#xff0c;prometheus。上报生产者监控打点 可以通过在Spring Boot应用中手动添加Kafka Producer的度量监控&#xff0c;确保Prometheus能够采集到Producer的指标。以下是一个示例代码&#xff0c;其中使…

【万字详解】三维重建(二)——NeRF、NeuS、MeshUDF、NeuralUDF、3DGS、GShell

文章目录 一、NeRF:Representing Scenes as Neural Radiance Fields for View Synthesis(推荐读)1.1 式1 神经网络的输入和输出1.2 式2 体素渲染算法1.3 式3 损失函数1.4 位置编码1.5 基本原理二、经典的重建流程2.1 传统的三维重建pipeline2.2 神经网络回归2.3 可微渲染最优…

优化Go语言中的网络连接:设置代理超时参数

网络连接优化的重要性 在分布式系统和微服务架构中&#xff0c;网络请求的效率直接影响到整个系统的响应速度。合理的超时设置可以防止系统在等待网络响应时陷入无限期的阻塞&#xff0c;从而提高系统的吞吐量和用户体验。特别是在使用代理服务器时&#xff0c;由于增加了网络…

【人工智能解读】神经网络(CNN)的特点及其应用场景器学习(Machine Learning, ML)的基本概念

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

颜色的基本处理

数码相机能够获取彩色图像&#xff0c;但相机的色彩处理是一个非常复杂的过程&#xff0c;是非常重要的。 此过程生产制造商在细节方面都是不公布的&#xff0c;但是基本的概念是相同的。当相机捕捉一个真实场景时&#xff0c;是怎么还原成人眼所看到的图像呢&#xff1f; 1.R…

OpenCV 功能函数介绍 (二)

一&#xff0c;梯度处理的sobel算子函数 功能&#xff1a; 用于计算图像梯度&#xff08;gradient&#xff09;的函数 参数&#xff1a; cv2.Sobel(src, ddepth, dx, dy, ksize3, scale1, delta0, borderTypeNone) cv2.Sobel&#xff08;输入图像 &#xff0c; 应该是灰…

PostgreSQL JSON/JSONB 查询与操作指南

PostgreSQL 提供了强大的 JSON 和 JSONB 数据类型及相关操作&#xff0c;适用于存储和查询半结构化数据。本文将详细介绍其常用操作。 1. 基础操作 1.1 JSON 属性访问 ->: 返回 JSON 对象中的值&#xff0c;结果为 JSON 格式。 SELECT {"a": {"b": 1…

《宇宙机器人》提示错误弹窗“找不到d3dx9_43.dll”是什么原因?“d3dx9_43.dll缺失”怎么解决?

电脑游戏运行时常见问题解析&#xff1a;《宇宙机器人》提示“找不到d3dx9_43.dll”的解决之道 TGA2024落幕&#xff0c;年度最佳游戏——《宇宙机器人》&#xff0c;作为一名在软件开发领域深耕多年的从业者&#xff0c;我深知电脑游戏在运行过程中可能会遇到的各种挑战&…

2024年山西省第十八届职业院校技能大赛 (高职组)“信息安全管理与评估”赛项规程

2024年山西省第十八届职业院校技能大赛 &#xff08;高职组&#xff09;“信息安全管理与评估”赛项规程 一、赛项名称 赛项名称&#xff1a;信息安全管理与评估 英文名称&#xff1a;Information Security Management and Evaluation 赛项组别&#xff1a;高职教师组 赛项归属…

modbus学习笔记

ModBus协议的两大变体&#xff1a;ModBus RTU 与 ModBus TCP Modbus报文头(MBAP)帧结构&#xff08;PDU&#xff09;7个字节 功能码&#xff1a;1个字节 注意&#xff1a;据说RTU和TCP的差距就是效验码 Modbus协议最基本的通信单位是帧&#xff0c;整个Modbus帧又被称之为应用…

Flutter 桌面端串口配置

前言 我使用flutter_libserialport包在macOS中实现串口通信的功能&#xff0c;可以实现数据收发&#xff0c;但是收到的内容是乱码。这种情况一般都是由于波特率和硬件设备不一致导致的。 配置串口配置 1.打开串口读写 import package:flutter_libserialport/flutter_libser…

JavaScript逆向时,常用的11个hook

提示:记录工作中遇到的需求及解决办法 文章目录 前言01、dom操作02、Cookie操作03、事件监听操作04、AJAX拦截操作05、函数替换操作06、Header操作07、URL操作08、JSON.stringify操作09、JSON.parse操作10、eval操作11、Function操作前言 在逆向分析JavaScript代码时,开发者…

什么是EDI 896?

EDI 896 报文即产品尺寸维护报告&#xff08;Product Dimension Maintenance&#xff09;&#xff0c;是一种常用于零售和供应链管理领域的EDI&#xff08;电子数据交换&#xff09;事务集。它的主要功能是用来传递或更新有关产品尺寸、属性和分类等信息。此消息通常在以下场景…