文章目录

  • ElementUi进行模糊搜索
    • 前言:
    • 官方函数说明
    • 函数分析
    • 解决方案
    • python引申

ElementUi进行模糊搜索

前言:

在ElementUi中,在带输入建议的输入框中进行搜索,发现只能通过首端匹配,如果输入的是非首字,将无法搜索。

首字搜索

输入豪或者豪大大,可搜索到豪大大香鸡…内容

非首字搜索

输入鸡,啥也搜不到

官方函数说明

autocomplete 是一个可带输入建议的输入框组件,fetch-suggestions 是一个返回输入建议的方法属性,如 querySearch(queryString, cb),在该方法中你可以在你的输入建议数据准备好时通过 cb(data) 返回到 autocomplete 组件中。

主要靠的就是如下方法:

querySearch(queryString, cb) {var restaurants = this.restaurants;var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;// 调用 callback 返回建议列表的数据cb(results);},createFilter(queryString) {return (restaurant) => {return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);};},

函数分析

略微分析一波,额,看不太懂。

仔细分析一波,找到核心突破口,createFilter,中文意思不就是创建过滤嘛,那好办了,直接看这个函数里面的内容。

return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);

理性拆解分析一波

toLowerCase() //用于把字符串转换为小写。
indexOf() //返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回 -1。

好家伙,原来在这里,indexof表示首次出现的位置,那么三个等于号加个0是什么。

粗略理解一波,就是必须要找到这个下标且在首位。这个零就是表示所找到的这个index下标必须为0;

而我们需要干嘛?我们需要不管这个字在不在首位,只要在这个字符串里面,那就算找到,这就是我们的模糊搜索的要点。

既然如此,没找到是-1,那么让它大于-1不就可以了?

解决方案

将createFilter方法中的返回方法改成如下,>-1

return (restaurant.host.toLowerCase().indexOf(queryString.toLowerCase()) > -1);

python引申

毕竟,咱做测试的,大部分用的python会多亿些,那么看js代码可能会像我一样云里雾里,扒出js的indexOf源码瞅一眼。

indexOf(searchString: string, position?: number): number;/*** Returns the last occurrence of a substring in the string.* @param searchString The substring to search for.* @param position The index at which to begin searching. If omitted, the search begins at the end of the string.*/

这是不是让你联想到了python里面的find方法?

那让我们看一下find的源码

    def find(self, sub, start=None, end=None): # real signature unknown; restored from __doc__"""S.find(sub[, start[, end]]) -> intReturn the lowest index in S where substring sub is found,such that sub is contained within S[start:end].  Optionalarguments start and end are interpreted as in slice notation.Return -1 on failure."""return 0

不愧是python,说的傻子都能看懂了。

找到了返回最开始找到的下标值,没找到返回-1嘛这不是。

来个小案列巩固一下。

all = 'text_xiaozaixt'
part = 'xt'
notin = 'm'print(all.find(part)) # 2 表示首次出现的位置下标为2
print(all.find(notin)) # -1
print("-----------------")
# python indexOf
if (all.find(part) > -1):print(f"{part}找到了")
else:print(f"{part}不在name里面")if (all.find(notin) > -1):print(f"{notin}找到了")
else:print(f"{notin}不在name里面")
# ------------运行结果----------------
xt找到了
m不在name里面

Vue使用ElementUi进行模糊搜索相关推荐

  1. Laravel6.0 + vue.js + elementUI + 微信小程序 实现沃尔玛扫码购

    本次项目使用 Laravel6.0 + vue.js + elementUI + 微信小程序 实现沃尔玛扫码购 项目设计-接口 本次项目所有接口使用 laravel 框架实现. 项目设计-后台 后台开 ...

  2. 织梦引用html,html直接引用vue和element-ui的方法

    短视频,站群系统,自媒体,达人种草一站服务 这篇文章主要介绍了html直接引用vue和element-ui的方法,本文通过实例代码给大家介绍的非常详细,采集软件,对大家的学习或工作具有一定的参考借鉴价 ...

  3. Vue之Element-ui和Vue-cli的使用

    Element-ui 单文件组件就像是一个个封装好的页面样板,我们可一把这些样板组合在一起形成一个完整的页面.就像QQ空间装扮一样,将个个样板放入QQ空间页面中组成自己风格的页面.而Element-u ...

  4. vue-element-admin台前端解决方案: 基于 vue 和 element-ui实现

    介绍 vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现.它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由,权限验证,提炼了典型 ...

  5. Vue.js(一) Vue.js + element-ui 扫盲

    Vue.js(一) Vue.js + element-ui 扫盲 2018年12月09日 20:32:59 vbirdbest 阅读数 7043更多 分类专栏: Vue.js + ElementUI ...

  6. vue 导入element-ui css报错解决方法

    组件使用参照官网http://element.eleme.io/#/zh-CN/component/quickstart 在 main.js 中写入以下内容: 1 2 3 4 5 6 import V ...

  7. VUE的element-ui的使用

    我们在自己的网站当中有的时候会用到element-ui的组建 1.如何安装element-ui的组件 在命令行工具当中输入cnpm i element-ui -S, 等待安装 2.如何在vue当中使用 ...

  8. vue与elementUI中给el-input绑定键盘按键--按键修饰符

    vue怎么写键盘事件 vue允许将按键值作为修饰符来使用,如监听回车事件,有两种写法,如下代码: <input type="text" @keyup.13="con ...

  9. vue全局安装jquery,vue使用bootstrap框架,vue中封装websocket通讯,vue引入element-ui 组件库,引入highcharts图表插件

    vue安装jquery: 1.使用vue-cli创建好vue项目后,在项目文件夹下,使用命令npm install jquery --save-dev 引入jquery. 2.修改项目文件 build ...

最新文章

  1. VMware 虚拟化编程(6) — VixDiskLib 虚拟磁盘库详解之二
  2. NYOJ 303 序号转换 数学题
  3. 通过例子学Solidity[注释翻译]
  4. NHibernate教程(5)--CRUD操作
  5. Python和Ruby语言对比
  6. linux命令中tar什么意思,Linux中tar命令起什么作用呢?
  7. Jenkins分布式集群设计方案
  8. 二十一、Java8新特性——Stream API【黑马JavaSE笔记】
  9. 实例学习网页制作中常用的网页表单的应用
  10. STEM创新教育-热量与马铃薯含水量之间的关系
  11. 如何提高仓库操作管理效率?
  12. wps底纹去不掉_WPS广告太多,关又关不掉,其实它有无广告的版本
  13. Python实现TOPSIS分析法(优劣解距离法)
  14. HTML表单标签,总结到位
  15. 【LINUX驱动开发】AMG8833红外成像模块在HI3516上的应用
  16. hnust 2186 C 层次遍历
  17. 【数据库专题】DML终极奥义——《狗叫江湖》“第五幕”
  18. matlab从无到有系列(四):符号数学基础
  19. mysql查询日期:本周、上周、本月、上月
  20. jodconverter,openoffice文档转换pdf 所需jar包

热门文章

  1. Navicat 12 无限期试用
  2. 在html中做产品介绍页面,电商网站的产品介绍怎么写,有哪些方法?
  3. 如何让新建网站alexa排名进入10万大关
  4. 【总结】2014年度总结
  5. codeforces738C
  6. 【MATLAB常用函数总结】生成随机数-poissrnd函数
  7. python unicode转中文_Python将Unicode代码转换为中文字符的几种方法,python,unicode,编码,汉字...
  8. 更改国服LOL语言为英语,并解决无法聊天框无法输入中文的问题
  9. The authenticity of host ‘gitee.com (180.97.125.228)‘ can‘t be established.
  10. linux下centos生成火车动画sl命令