Element-ui Select选择器自定义搜索方法

效果图

在这里插入图片描述

具体实现

<template>
  <div class="home">
    <el-select
      ref="currencySelect"
      v-model="currency"
      filterable
      :spellcheck="false"
      placeholder="请选择"
      :filter-method="handleCurrencyFilter"
      @change="handleCurrencyChange"
      @visible-change="handleCurrencyVisible"
      style="width: 240px;"
    >
      <el-option
        v-for="(item, index) in currencyOptions"
        :key="index"
        :label="item.label"
        :value="item.label"
      >
        <span style="float: left">{{ item.label }}</span>
        <span
          v-if="item.value !== ''"
          style="float: right; color: #8492a6; font-size: 13px;margin-left: 15px;">
          {{ item.nation }}
        </span>
      </el-option>
    </el-select>
  </div>
</template>

<script setup>
import { ref, reactive, computed, onMounted } from "vue"
let currency = ref('')
let currencyOld = ref('')
let flag = ref(false)
const currencySelect = ref(null)
let dataList = reactive([
  { label: 'CNY', value: 'CNY', nation: '中国'},
  { label: 'USD', value: 'USD', nation: '美国'},
  { label: 'EUR', value: 'EUR', nation: '欧盟'},
  { label: 'JPY', value: 'JPY', nation: '日本'},
  { label: 'GBP', value: 'GBP', nation: '英国'},
  { label: 'AUD', value: 'AUD', nation: '澳大利亚'},
  { label: 'CHF', value: 'CHF', nation: '瑞士'},
  { label: 'CAD', value: 'CAD', nation: '加拿大'},
  { label: 'NZD', value: 'NZD', nation: '新西兰'},
  { label: 'SGD', value: 'SGD', nation: '新加坡'},
  { label: 'HKD', value: 'HKD', nation: '香港'},
  { label: 'TWD', value: 'TWD', nation: '台湾'},
  { label: 'SEK', value: 'SEK', nation: '瑞典'},
  { label: 'DKK', value: 'DKK', nation: '丹麦'},
  { label: 'NOK', value: 'NOK', nation: '挪威'},
  { label: 'HUF', value: 'H}UF', nation: '匈牙利'},
  { label: 'PLN', value: 'PLN', nation: '波兰'},
  { label: 'RUB', value: 'RUB', nation: '俄罗斯'},
  { label: 'BRL', value: 'BRL', nation: '巴西'},
  { label: 'MXN', value: 'MXN', nation: '墨西哥'},
  { label: 'ZAR', value: 'ZAR', nation: '南非'},
  { label: 'TRY', value: 'TRY', nation: '土耳其'},
  { label: 'INR', value: 'INR', nation: '印度'},
  { label: 'IDR', value: 'IDR', nation: '印度尼西亚'},
  { label: 'MYR', value: 'MYR', nation: '马来西亚'},
  { label: 'PHP', value: 'PHP', nation: '菲律宾'},
  { label:'THB', value: 'THB', nation: '泰国'},
  { label: 'KRW', value: 'KRW', nation: '韩国'},
  { label: 'VND', value: 'VND', nation: '越南'},
  { label: 'HKD', value: 'HKD', nation: '香港'},
  { label: 'KPW', value: 'KPW', nation: '朝鲜'}
])
let currencyOptions = ref([])

const getData = () => {
  currencyOptions.value = dataList
}
// 自定义搜索方法
const handleCurrencyFilter = (query) => {
  // 如果搜索关键字为空,则恢复搜索前的值
  currency.value = query ? query : currencyOld.value
  currencyOptions.value = dataList.filter(v => {
    return v.label.indexOf(query.toUpperCase()) > -1 || v.nation.indexOf(query) > -1
  })
}
// 选中值发生变化时触发
const handleCurrencyChange = (val) => {
  flag.value = true
  currencyOld.value = val
  currencySelect.value.blur()
  // 延时,避免搜索后下拉列表恢复全量数据时高度闪现
  setTimeout(() => {
    currencyOptions.value = [...dataList]
  }, 150)
}
// 下拉框出现/隐藏时触发
const handleCurrencyVisible = (visible) => {
  if (!visible) {
    // 下拉框隐藏时, 如果没有选择新的值则恢复搜索前的值
    if (!flag.value) currency.value = currencyOld.value
    currencySelect.value.blur()
  } else {
    flag.value = false
  }
}
onMounted(() => {
  getData()
})
</script>
<style scoped lang="less">
.home {
  display: flex;
  justify-content: center;
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode-44-通配符匹配

题解&#xff1a; 代码&#xff1a; 参考&#xff1a; (1)牛客华为机试HJ71字符串通配符 (2)leetcode-10-正则表达式匹配

C/C++中使用MYSQL

首先要保证下载好mysql的库和头文件&#xff0c;头文件在/usr/include/mysql/目录下&#xff0c;库在/usr/lib64/mysql/目录下&#xff1a; 一般情况下&#xff0c;在我们安装mysql的时候&#xff0c;这些都提前配置好了&#xff0c;如果没有就重装一下mysql。如果重装mysql还是…

Tryhackme练习-Wonderland

基本信息 由于tryhackme是在线靶场&#xff0c;所以这里的IP均为对方的内网IP 攻击机器&#xff1a;10.10.242.186 靶机&#xff1a;10.10.173.3 目标&#xff1a;获取2个flagroot权限 具体流程 信息收集 首先我们使用fscan进行端口扫描&#xff0c;fscan -h 10.10.173.…

SQL笔试题笔记(1)

下列选项中关于数据库事务的特性描述正确的是&#xff08;&#xff09; A.事务允许继续分割B.多个事务在执行事务前后对同一个数据读取的结果是不同的C.一个事务对数据库中数据的改变是暂时的D.并发访问数据库时&#xff0c;各并发事务之间数据库是独立的 答案解析&#xff1a…

vue3 如何调用第三方npm包内部的 pinia 状态管理库方法

抛砖引玉: 如果在开发vue3项目是, 引用了npm第三方包 ,而且这个包内使用了Pinia 状态管理库,那我们如何去调用 npm内部的 Pinia 状态管理库呢? 实际遇到的问题: 今天在制作npm包时遇到的问题,之前Vue2版本的时候状态管理库用的Vuex ,当时调用npm包内的状态管理库很简单,直接引…

麒麟KylinServer的网站,并部署一套主从DNS服务器提供域名解析服务

一、KylinServer网站搭建 ifconfig Copy 注意:根据实际网卡设备名称情况调整代码!不同环境下网卡名称略有不同! 获取本机IP地址,记住IP地址用于之后的配置填写。 ifconfig enp0s2 Copy 下载nginx源码包,并解压缩 wget http://10.44.16.102:60000/allfiles/Kylin/ng…

Python数据分析NumPy和pandas(三十五、时间序列数据基础)

时间序列数据是许多不同领域的结构化数据的重要形式&#xff0c;例如金融、经济、生态学、神经科学和物理学。在许多时间点重复记录的任何内容都会形成一个时间序列。许多时间序列是固定频率的&#xff0c;也就是说&#xff0c;数据点根据某些规则定期出现&#xff0c;例如每 1…

大数据常见面试题及答案(Linux、Zookeeper、Hadoop、Hive)

技术问答题目 一、Linux 1.如何给⽂件(⽂件夹)分配读r、w、x的操作权限&#xff1f; 2. vi 编辑器的常⽤命令有哪些&#xff1f; 3.Linux 中⽂件的操作权限分为⼏种&#xff1f; 4.Linux 中实时查看日志的方法 5. Linux查看内存、磁盘存储、io 读写、端口占用、进程等命…

【软件工程】一篇入门UML建模图(类图)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;软件开发必练内功_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

开源音乐分离器Audio Decomposition:可实现盲源音频分离,无需外部乐器分离库,从头开始制作。将音乐转换为五线谱的程序

今天给大家分析一个音频分解器&#xff0c;通过傅里叶变换和信封匹配分离音乐中的各个音符和乐器&#xff0c;实现音乐到乐谱的转换。将音乐开源分离为组成乐器。该方式是盲源分离&#xff0c;从头开始制作&#xff0c;无需外部乐器分离库。 相关链接 代码&#xff1a;https:…

微服务day10-Redis面试篇

Redis主从 搭建主从集群 建立集群时主节点会生成同一的replicationID,交给各个从节点。 集群中的缓冲区是一个环型数组&#xff0c;即若从节点宕机时间过长&#xff0c;可能导致命令被覆盖。 主从集群优化 哨兵原理 哨兵是一个集群来确保哨兵不出现问题。 服务状态监控 选举…

交换排序——快速排序

交换排序——快速排序 7.7 交换排序——快速排序快速排序概念c语言的库函数qsort快速排序框架quickSort 7.7 交换排序——快速排序 快速排序概念 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff08;下文简称快排&#xff09;&#xff0c;其基本思想为&a…

预处理(1)(手绘)

大家好&#xff0c;今天给大家分享一下编译器预处理阶段&#xff0c;那么我们来看看。 上面是一些预处理阶段的知识&#xff0c;那么明天给大家讲讲宏吧。 今天分享就到这里&#xff0c;谢谢大家&#xff01;&#xff01;

自动驾驶系列—深入解析自动驾驶车联网技术及其应用场景

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

华为路由策略配置

一、AS_Path过滤 要求&#xff1a; AR1与AR2、AR2与AR3之间建立EBGP连接 AS10的设备和AS30的设备无法相互通信 1.启动设备 2.配置IP地址 3.配置路由器的EBGP对等体连接&#xff0c;引入直连路由 [AR1]bgp 10 [AR1-bgp]router-id 1.1.1.1 [AR1-bgp]peer 200.1.2.2 as-nu…

深度学习中的Pixel Shuffle和Pixel Unshuffle:图像超分辨率的秘密武器

在深度学习的计算机视觉任务中&#xff0c;提升图像分辨率和压缩特征图是重要需求。Pixel Shuffle和Pixel Unshuffle是在超分辨率、图像生成等任务中常用的操作&#xff0c;能够通过转换空间维度和通道维度来优化图像特征表示。本篇文章将深入介绍这两种操作的原理&#xff0c;…

React--》如何高效管理前端环境变量:开发与生产环境配置详解

在前端开发中&#xff0c;如何让项目在不同环境下表现得更为灵活与高效&#xff0c;是每个开发者必须面对的挑战&#xff0c;从开发阶段的调试到生产环境的优化&#xff0c;环境变量配置无疑是其中的关键。 env配置文件&#xff1a;通常用于管理项目的环境变量&#xff0c;环境…

HuggingFace:基于YOLOv8的人脸检测模型

个人操作经验总结 1、YOLO的环境配置 github 不论base环境版本如何&#xff0c;建议在conda的虚拟环境中安装 1.1、创建虚拟环境 conda create -n yolov8-face python3.9conda create &#xff1a;创建conda虚拟环境&#xff0c; -n &#xff1a;给虚拟环境命名的…

基于Python的仓库管理系统设计与实现

背景&#xff1a; 基于Python的仓库管理系统功能介绍 本仓库管理系统采用Python语言开发&#xff0c;利用Django框架和MySQL数据库&#xff0c;实现了高效、便捷的仓库管理功能。 用户管理&#xff1a; 支持员工和管理员角色的管理。 用户注册、登录和权限分配功能&#x…

当 docker-compose.yaml 文件部署时,Dify 线上版本升级过程

如果线上 Dify 是通过 docker-compose.yaml 文件部署的&#xff0c;那么当 Dify 版本升级时该如何操作呢&#xff1f;官方已经给出了 Docker compose 和 Source Code 两种方式。相对而言&#xff0c;前者更简单些&#xff0c;至少不需要安装依赖包和迁移数据库文件。为了更加具…