当前位置: 首页 > article >正文

element ui--下拉根据拼音首字母过滤

很多场景下我们的下拉不仅仅要根据选项中的字过滤,还要根据拼音首字母过滤,现在我们来实现下。

要获取汉字拼音,可以用pinyin-pro库来实现

1.导入拼音库

npm install pinyin-pro

下面的代码可以获取companyName的拼音,返回的是数组,不包含声调 

import { pinyin } from 'pinyin-pro';

pinyin(companyName, { toneType: 'none', type: 'array' })

2.调用接口,获取数据,然后遍历数据,设置拼音首字母

    getCompanyList() {
      this.reportLoading=true
      listBasecompany({pageNum: 1,
        pageSize: 100,req:{isValid:1}}).then(response => {
        response.data.content.forEach(item=>{
          //组合拼音首字母
          item.firstPinyin = pinyin(item.companyName, { toneType: 'none', type: 'array' }).map(item=>{
            return item.substring(0, 1).toLowerCase()
          }).join('')
        })
        this.companyList = response.data.content;
        this.filterCompanyList = Object.assign(this.companyList);
      }).finally(()=>{
        this.reportLoading=false
      });
    },

 这段代码的作用就是拿到汉字的拼音首字母,如天气返回的就是tq

 我们要克隆一份filterCompanyList,option需要通过这个来生成

我们看下html代码怎么写

          <el-form-item
            label="单位名称"
            prop="companyId"
            class="label-right-align"
          >
            <el-select
              v-model="checkForm.companyId"
              class="full-width-input"
              :filter-method="companyFilter"
              clearable
              filterable
              style="width: 110%"
              @clear="clearCompany"
            >
              <el-option
                v-for="(item, index) in filterCompanyList"
                :key="item.id"
                :label="item.companyName"
                :value="item.id"
                :disabled="item.disabled"
              />
            </el-select>
          </el-form-item>

我们来看下重点代码,需要开启filterable,然后重写filter-method方法,el-option的key要用id,不要用index,否则某些输入会导致select重渲染导致输入框里面的值丢失

 companyFilter就比较简单了,把包含输入项,或者起始是拼音首字母的过滤出来,赋值给filterCompanyList

    companyFilter(v) {
      this.filterCompanyList = this.companyList.filter((item) => {
        // 如果直接包含输入值直接返回true
        if (item.companyName.indexOf(v) !== -1 || item.firstPinyin.startsWith(v)) return true;
      });
    },

最后一点注意事项,如果你开启了clearable,要重写clear方法

	clearCompany(){
      this.filterCompanyList=this.companyList
    },


http://www.kler.cn/a/452816.html

相关文章:

  • Cesium材质——Material
  • golang连接jenkins构建build
  • python+reportlab创建PDF文件
  • 五、Swagger 介绍(Flask+Flasgger的应用)
  • Anton和Danik的棋局对决
  • 【西安电子科技大学考研】25官方复试专业课参考书目汇总
  • 纯真社区版IP库CZDB数据格式使用教程
  • 05.HTTPS的实现原理-HTTPS的握手流程(TLS1.2)
  • 【大语言模型】ACL2024论文-34 你的模型能区分否定和隐含意义吗?通过意图编码器揭开挑战
  • 美食推荐系统|Java|SSM|JSP|
  • w~视觉~3D~合集5
  • 如何编写 Prompt
  • 笔记工具--MD-Markdown的语法技巧
  • OSI 网络 7 层模型
  • Let‘s encrypt 免费 SSL 证书安装
  • [Unity Shader][图形渲染]【游戏开发】 Shader数学基础8 - 齐次坐标
  • Docker部署Sentinel
  • vue 基础学习
  • 赛博错题本
  • android 登录界面编写
  • 在UE5中调用ImGui图形界面库
  • Mysql的MHA高可用及故障切换
  • 3.银河麒麟V10 离线安装Nginx
  • VisionPro开发使用交互反馈系统(Affordance System)
  • 自定义 SpringBoot Starter
  • 联通软研院:基于OceanBase落地检索增强生成 (RAG) 的应用实践