首页 > 其他分享 >el-select 支持拼音搜索(含插件 pinyin-match 的使用)

el-select 支持拼音搜索(含插件 pinyin-match 的使用)

时间:2024-01-05 11:35:52浏览次数:36  
标签:el 插件 pinyin list match org filtered searchContent


效果预览

el-select 支持拼音搜索(含插件 pinyin-match 的使用)_element ui

安装插件 pinyin-match

cnpm i pinyin-match --save

导入插件 pinyin-match

import PinYinMatch from "pinyin-match";

在过滤方法中使用

matchFruit(searchContent) {
      if (searchContent) {
        let result = [];
        this.list_org.forEach((item) => {
          // matchResult 的值为 true/false
          let matchResult = PinYinMatch.match(item.label, searchContent);
          if (matchResult) {
            result.push(item);
          }
        });
        this.list_filtered = result;
      } else {
        this.list_filtered = this.list_org;
      }
    },

完整范例

<template>
  <div class="container">
    <el-select
      v-model="fruit"
      placeholder="请选择水果"
      filterable
      :filter-method="matchFruit"
      clearable
      @clear="clearFruit"
    >
      <el-option
        v-for="item in list_filtered"
        :key="item.value"
        :label="item.label"
        :value="item.value"
      >
      </el-option>
    </el-select>
  </div>
</template>
<script>
import PinYinMatch from "pinyin-match";
export default {
  data() {
    return {
      fruit: "",
      list_org: [
        {
          value: 1,
          label: "苹果",
        },
        {
          value: 2,
          label: "香蕉",
        },
        {
          value: 3,
          label: "梨子",
        },
      ],
      list_filtered: [],
    };
  },
  mounted() {
    this.list_filtered = this.list_org;
  },
  methods: {
    matchFruit(searchContent) {
      if (searchContent) {
        let result = [];
        this.list_org.forEach((item) => {
          // matchResult 的值为 true/false
          let matchResult = PinYinMatch.match(item.label, searchContent);
          if (matchResult) {
            result.push(item);
          }
        });
        this.list_filtered = result;
      } else {
        this.list_filtered = this.list_org;
      }
    },
    clearFruit() {
      this.list_filtered = this.list_org;
    },
  },
};
</script>

<style lang="scss" scoped>
.container {
  margin: 30px;
}
</style>

注意事项

  • el-option 的 v-for 循环中的 key 不能用 index, 否则会出现输入拼音不显示的bug,如输入 l 不显示
  • 若 el-select 添加了 clearable,则需如范例添加 @clear=“clearFruit” 以便在清除内容后,将下拉列表恢复为过滤前的列表。


标签:el,插件,pinyin,list,match,org,filtered,searchContent
From: https://blog.51cto.com/u_15715491/9111429

相关文章

  • Flutter中GridTile中图像上方的InkVell波纹
    Flutter中GridTile中图像上方的InkVell波纹我认为这是在图像上显示波纹效果的更好方法。Ink.image(image:AssetImage('sample.jpg'),fit:BoxFit.cover,child:InkWell(onTap:(){},),),使用Stack,我们可以将Material和InkWell带到图像上。要拉伸材......
  • Apache Commons BCEL与Java字节码操作
    第1章:ApacheCommonsBCEL简介大家好,我是小黑,咱们今天来聊聊ApacheCommonsBCEL(ByteCodeEngineeringLibrary)。你可能会问,BCEL是什么鬼?别急,小黑这就给你娓娓道来。BCEL,它是一款专门用来操作Java字节码的库。想象一下,Java代码编译后变成了字节码,这些字节码是Java虚拟机执行的......
  • 【Webpack】-定义及各种使用和自动生成html插件
    一、什么是Webpackwebpack被定义为现代JavaScript应用程序的静态模块打包器(modulebundler),是目前最为流行的JavaScript打包工具之一。静态模块:指的是编写代码过程中的,html,css,js,图片等固定内容的文件打包:把静态模块内容,压缩,整合,转译等(前端工程化)1.把less/sass转成css代码2.......
  • 微信小程序直播(二):如何使用第三方直播插件快速实现企业直播间
    ZEGO微信小程序直播SDK可以在微信小程序中提供实时音视频直播服务,从而实现电商直播/在线教育/在线问诊/视频客服等各种业务场景。但是由于微信小程序的官方限制,在某些场景下需要额外使用ZEGO提供的小程序直播插件才能实现实时音视频直播功能。本节将介绍需要使用与不需要使用Z......
  • Spring Boot 3 集成 Thymeleaf
    在现代的Web开发中,构建灵活、动态的用户界面是至关重要的。SpringBoot和Thymeleaf的结合为开发者提供了一种简单而强大的方式来创建动态的Web应用。本文将介绍如何在SpringBoot项目中集成Thymeleaf,并展示一些基本的使用方法。什么是Thymeleaf?Thymeleaf是一款用于Web和独立环境......
  • Reboot and select proper Boot device
    "RebootandselectproperBootdevice"是计算机启动时出现的错误信息之一,通常表示计算机无法找到正确的启动设备。这个错误信息可能是由多种原因引起的,包括硬件故障、操作系统问题、BIOS设置等。以下是一些可能的解决方案:检查硬件连接:确保所有硬盘、光驱和其他可启动设备都已正......
  • 40 个简单又有效的 Linux Shell 脚本示例
    原创:厦门微思网络  【微思2002年成立,专业IT认证培训21年!】linux学习专栏历史上,shell一直是类Unix系统的本地命令行解释器。它已被证明是Unix的主要功能之一,并发展成为一个全新的主题。Linux提供了各种功能强大的shell,包括Bash、Zsh、Tcsh和Ksh。这些外壳最令人惊讶......
  • 2023年终盘点:Apache SeaTunnel社区年度成就与展望
    随着2023年即将画上圆满的句号,是时候回顾过去一年ApacheSeaTunnel社区的辉煌成就和宝贵经验。在这充满挑战和机遇的一年里,我们的社区不断壮大,技术不断进步,成就斐然。展望2024年展望来年,ApacheSeaTunnel社区将继续致力于打造更加高效稳定的数据集成平台,并着重在DDL自动变更、自......
  • 【愚公系列】2024年01月 WPF控件专题 Label、TextBox、PasswordBox控件介绍
    ......
  • 2023年终盘点:Apache SeaTunnel社区年度成就与展望
    随着2023年即将画上圆满的句号,是时候回顾过去一年ApacheSeaTunnel社区的辉煌成就和宝贵经验。在这充满挑战和机遇的一年里,我们的社区不断壮大,技术不断进步,成就斐然。展望2024年展望来年,ApacheSeaTunnel社区将继续致力于打造更加高效稳定的数据集成平台,并着重在DDL自动变更、自......