如何在Element-ui中实现一个远程搜索功能

发布时间:2021-01-29 14:50:00

来源:亿速云

阅读:87

作者:Leah

这篇文章给大家介绍如何在Element-ui中实现一个远程搜索功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

方式一

v-model="value"

filterable

remote

placeholder="请输入关键词"

:remote-method="remoteMethod"

:loading="loading"

>

v-for="item in options"

:key="item.value"

:label="item.label"

:value="item.value"

>

export default {

name: "app",

data() {

return {

options: [],

value: [],

loading: false,

};

},

methods: {

// 当用户输入内容开始远程搜索模糊查询的时候,会触发remoteMethod方法

remoteMethod(query) {

// 如果用户输入内容了,就发请求拿数据,远程搜索模糊查询

if (query !== "") {

this.loading = true; // 开始拿数据喽

// 这里模拟发请求,res就当成发请求返回来的数据吧。

let res = [

{

label: "孙悟空",

value: 500,

},

{

label: "孙尚香",

value: 18,

},

{

label: "沙和尚",

value: 1000,

},

{

label: "沙师弟",

value: 999,

},

];

this.loading = false // 拿到数据喽

// 然后把拿到的所有数据,首先进行一个过滤,把有关联的过滤成一个新数组给到options使用

this.options = res.filter((item)=>{

// indexOf等于0代表只要首个字匹配的,如:搜索 王 王小虎数据会被过滤出来,但是 小虎王的数据不会被过滤出来。因为indexOf等于0代表以什么开头

// return item.label.toLowerCase().indexOf(query.toLowerCase()) == 0

// indexOf大于-1代表的是,只要有这个字出现的即可,如:搜索 王 王小虎、小虎王、小王虎都会被过滤出来。因为indexOf找不到才会返回-1,

// 大于-1说明只要有就行,不论是不是开头也好,中间也好,或者结尾也好

return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1

})

} else {

this.options = [];

}

},

},

};

说实话,我个人喜欢用方式二。来人呐,上代码

方式二

v-model="state2"

:fetch-suggestions="querySearch"

placeholder="请输入内容"

:trigger-on-focus="false"

@select="handleSelect"

size="small"

>

  • {{ item.value }}

export default {

name: "app",

data() {

return {

state2: "",

fruit: [

{

value: "香蕉",

price: "8.58",

},

{

value: "车厘子",

price: "39.99",

},

{

value: "核桃",

price: "26.36",

},

{

value: "芒果",

price: "15.78",

},

],

};

},

methods: {

// 第二步

// 当queryString不为空的时候,就说明用户输入内容了,我们把用户输入的内容在数据库中做对比,如果有能够模糊关联的,就直接取出

// 并返回给带搜索建议的输入框,输入框就把返回的数据以下拉框的形式呈现出来,供用户选择。

querySearch(queryString, cb) {

if (queryString != "") {

// 输入内容以后才去做模糊查询

setTimeout(() => {

let callBackArr = []; // 准备一个空数组,此数组是最终返给输入框的数组

// 这个res是发请求,从后台获取的数据

const res = [

{

value: "苹果",

price: "13.25",

},

{

value: "苹果1",

price: "13.25",

},

{

value: "苹果2",

price: "13.25",

},

{

value: "苹果3",

price: "13.25",

},

{

value: "苹果4",

price: "13.25",

},

{

value: "苹果5",

price: "13.25",

},

];

res.forEach((item) => {

// 把数据库做遍历,拿用户输入的这个字,和数据库中的每一项做对比

// if (item.value.indexOf(queryString) == 0) { // 等于0 以什么什么开头

if (item.value.indexOf(queryString) > -1) { // 大于-1,只要包含就行,不再乎位置

// 如果有具有关联性的数据

callBackArr.push(item); // 就存到callBackArr里面准备返回呈现

}

});

// 经过这么一波查询操作以后,如果这个数组还为空,说明没有查询到具有关联的数据,就直接返回给用户暂无数据

if (callBackArr.length == 0) {

cb([{ value: "暂无数据", price: "暂无数据" }]);

}

// 如果经过这一波查询操作以后,找到数据了,就把装有关联数据的数组callBackArr呈现给用户

else {

cb(callBackArr);

}

}, 1000);

}

},

// 点击谁,就把谁放进去

handleSelect(item) {

this.fruit = []

this.fruit.push(item)

},

},

};

关于如何在Element-ui中实现一个远程搜索功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

element 搜索匹配_如何在Element-ui中实现一个远程搜索功能相关推荐

  1. android中的后退功能,如何在Android应用中实现一个返回键功能

    如何在Android应用中实现一个返回键功能 发布时间:2020-11-23 16:28:56 来源:亿速云 阅读:89 作者:Leah 今天就跟大家聊聊有关如何在Android应用中实现一个返回键功 ...

  2. 禁用删除键退回历史记录_如何在Windows 8中删除或禁用搜索超级按钮历史记录

    禁用删除键退回历史记录 When you use the Search Charm in Windows 8 it remembers everything you search for, which ...

  3. sql server 数组_如何在SQL Server中实现类似数组的功能

    sql server 数组 介绍 (Introduction) I was training some Oracle DBAs in T-SQL and they asked me how to cr ...

  4. element标签弹窗_如何在element plus中实现不同弹窗传值

    工具 HBuilderXGitnpm浏览器技术 Vue3Element PlusJavaScript在element plus组件中,弹窗el-dialog可以用来输入数据,还可以展示数据.如果在一个 ...

  5. 多线程计算多分批计算_如何在Excel 2013中更改自动计算和多线程功能

    多线程计算多分批计算 By default, Excel recalculates all the formulas in your worksheet automatically when you ...

  6. 谷歌浏览器的翻译功能在哪_如何在Google表格中使用AND和OR功能

    谷歌浏览器的翻译功能在哪 If you've ever wanted to check whether data from your Google Sheets spreadsheet meets c ...

  7. android 工具栏沉浸 下拉,如何在Android应用中实现一个沉浸式状态栏效果

    如何在Android应用中实现一个沉浸式状态栏效果 发布时间:2020-12-08 17:04:42 来源:亿速云 阅读:151 作者:Leah 这篇文章将为大家详细讲解有关如何在Android应用中 ...

  8. 如何在R代码中找到一个值的行号

    如何在R代码中找到一个值的行号? 例如: 在以下一组值中,如何在第4列中找到特定值的行号? 如何使用R代码命令找到列4中的值"1578"的行号. > mydata_2sex ...

  9. 如何在React Native中写一个自定义模块

    前言 在 React Native 项目中可以看到 node_modules 文件夹,这是存放 node 模块的地方,Node.js 的包管理器 npm 是全球最大的开源库生态系统.提到npm,一般指 ...

最新文章

  1. Exchange Server 2003 Cluster
  2. SpringBoot使用StringRedisTemplate操作Redis字符串
  3. POJ 2337 输出欧拉路径
  4. 如何将MATLAB程序发布为独立的不依赖MATLAB环境可执行的程序包(基于Matlab R2015b版 )
  5. [翻译]DirectX 状态( 转)
  6. 54 FI配置-财务会计-固定资产-主数据-更改评估组的关键词
  7. linux笔记本设置休眠
  8. 页面404?找不到页面咋整?
  9. phpstrom自己定义和原本的常用快捷键
  10. LINUX SHELL中数组的使用
  11. pgadmin4下载
  12. 基于 Verilog 的经典数字电路设计(3)选择器
  13. ati自定义分辨率_真三国无双7游戏自定义分辨率的修改方法
  14. 完整ASCII字符表
  15. Baklib-专业的在线产品手册制作平台
  16. 随机数 == 伪随机数?
  17. 功能连接分析方法及其解释缺陷的综述
  18. 推荐系统笔记(MAB问题)
  19. MySQL - 21查询分析器EXPLAIN
  20. 数值分析 python_数值分析实验之矩阵特征值(Python代码)

热门文章

  1. 移动端开发语言的未来的猜想#华为云·寻找黑马程序员#
  2. LeetCode-25:K 个一组翻转链表
  3. php代码实现tp5监听队列,thinkPHP5的队列使用
  4. python3集合(set)
  5. mysql 定时统计_PHP+MySQL定时数据统计优化
  6. c++获得cpu厂商_使用Visual C++编程取得CPU信息
  7. react更改路由入参_react路由传参方式
  8. python的ols_【量化工具】OLS在python中的四种实现方式
  9. java多线程【线程安全问题】
  10. CentOS8如何修改系统日志的时间戳格式(rsyslog8版本)