文章目录

  • 1、Demo演示
  • 2、HTML结构
  • 3、实现
    • 3.1 基于计算属性`computed`实现
    • 3.2 基于侦听器`watch`实现

1、Demo演示


模糊搜索功能是日常开发中常见的一种功能,这里用两种方式进行模拟实现。

2、HTML结构

<template><div><div><input type="text" v-model="keyWord"></div><ul><li  v-for="fruit in filterFruitList" :key="fruit.id">{{fruit.name}}</li></ul></div>
</template>

为简单起见,HTML结构仅包含一个搜索框和一个列表。

3、实现

3.1 基于计算属性computed实现

export default {name: 'Computed',data() {return {keyWord: '',fruitList: [{"id": 1,"name": '香蕉'},{"id": 2,"name": '水蜜桃'},{"id": 3,"name": '香瓜'},{"id": 4,"name": '西瓜'},{"id": 5,"name": '哈密瓜'}]}},computed: {filterFruitList() {return this.fruitList.filter((item) => {return item.name.indexOf(this.keyWord) !== -1;})}}
}
</script>

computed的实现方式很简洁,主要借助一个计算属性,在计算属性中通过搜索关键词过滤原始列表数据得到新的数据列表,并将新数据列表渲染到页面。

值得注意的地方:
abc.indexOf('a')的返回值是0,而abc.indexOf('')的返回值也是0

因此,在一开始没有输入任何数据的时候,计算属性列表filterFruitList中经过计算得到的数据和原始列表数据fruitList是一样的。

3.2 基于侦听器watch实现

<script>
export default {name: 'Computed',data() {return {keyWord: '',fruitList: [{"id": 1,"name": '香蕉'},{"id": 2,"name": '水蜜桃'},{"id": 3,"name": '香瓜'},{"id": 4,"name": '西瓜'},{"id": 5,"name": '哈密瓜'}],filterFruitList: []}},watch: {keyWord: {immediate: true,handler(val) {this.filterFruitList = this.fruitList.filter((item) => {return item.name.indexOf(val) !== -1;})}}}
}
</script>

使用watch实现需要注意的地方:

  • 需要事先准备一个值为空的属性filterFruitList
  • watch实现中,keyWord中详细配置immediate的值要设置为true,就相当于,在输入框首次没有输入任何数据时,立即执行一次,将filterFruitList 的值初始化为fruitList中的值。

注意: 不论是computed,还是watch的实现方式,都没有对原始数据fruitList进行修改或者破坏。这也是一个比较重要的点。

【Vue实践】列表搜索框中模糊搜索功能的两种实现方式相关推荐

  1. 搜索计算机无法输入法,Windows10左下角搜索框无法输入字符的两种解决方法

    用户在使用win10系统过程中,经常会使用到其自带的搜索功能.不过,近来有些用户却发现电脑左下角的搜索框突然无法输入字符.那这该怎么办呢?我们最常用的方法是重启电脑,让win10的搜索服务重新运行.下 ...

  2. 计算机搜索没办法打汉字,Win10左下角搜索框无法输入字符的两种解决方法

    用户在使用 win10系统 过程中,经常会使用到其自带的搜索功能.不过,近来有些用户却发现电脑左下角的搜索框突然无法输入字符.那这该怎么办呢?我们最常用的方法是重启电脑,让win10的搜索服务重新运行 ...

  3. java map遍历_Java中Map集合的两种遍历方式

    Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...

  4. java中两种遍历集合的方式_Java中Map集合的两种遍历方式

    Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...

  5. 1.JavaScript中定义数组的两种主要方式

    JavaScript中定义数组的两种主要方式(new Array()和[]方式) new Array() ①可以用像JAVA的那种写法的方式定义,如 var arr = new Array() 这样定 ...

  6. 在前端网页设计中 align 和 valign 两种对齐方式的不同取值区分(持续补充)

    文章目录 前言 一.align 与 valign 的对齐方式与取值 二.常见应用区分整理 2.1.H5 页面设计的取值 2.2.表格标题的取值 2.3.表格属性的取值 总结 前言 不知道大家在学习 H ...

  7. ajax onload怎么用,Ajax中onload和onreadystatechange两种请求方式的区别

    一. onreadystatechange 1. XMLHttpRequest对象有一个属性readyState,将其(xhr.readyState)打印后发现.进入onreadystatechang ...

  8. Java中定义字符串的两种常见方式、使用==和equals()比较字符串

    在讲使用==和equals()比较字符串之前,我们首先要讲定义字符串的两种常见方式,一种是定义一个常量,即直接定义字符串,一种是通过new关键字定义一个变量,即使用String类定义字符串,如下图: ...

  9. Java中匿名类的两种实现方式

    使用匿名内部类课使代码更加简洁.紧凑,模块化程度更高.内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到.然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式 ...

最新文章

  1. 汇编试验十五:安装新的int 9中断例程
  2. 告别2019:属于深度学习的十年,那些我们必须知道的经典
  3. 计算机无法搜索程序,电脑搜索功能不能用的解决方法
  4. FileReader (三) - 网页拖拽并预显示图片简单实现
  5. VTK:Filtering之SurfaceFromUnorganizedPointsWithPostProc
  6. 排序的几种方法 oc
  7. 2018/5/14~2018/5/18 周记
  8. java中Infinity(无限)和NaN
  9. 为Android Studio中的SettingsActivity定制任务栏 (Setting Activity其实本质上是从PreferenceActivity中继承过来的)
  10. Halcon:区域特征:select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )
  11. Matrix: android 中的Matrix (android.graphics.Matrix) (转)
  12. bat运行exe 自动确认_无powershell运行powershell方法总结
  13. 2018年高教社杯全国大学生数学建模竞赛题目A题   高温作业专用服装设计
  14. Java短信验证码-互亿无线
  15. n皇后问题-c语言实现
  16. 删库跑路大神的一生,真狠人!
  17. MATLAB 学习笔记(6)MATLAB 的 upsample 函数和 downsample 函数
  18. oracle查看dlink,oracle创建dlink方法
  19. vue使用echart绘制全国地图,叠加图表
  20. 折半查找判定数及平均查找长度(一定要看这 能看懂的)

热门文章

  1. 户外服装品牌TheNorthFace遭遇撞库 撞库究竟如何成功窃取账户信息
  2. 批量修改文本添加字符批处理
  3. svn: followed by invalid utf-8 sequence错误的解决方法
  4. AMBA AHB面试题连载(一)
  5. 《数据结构、算法与应用 —— C++语言描述》学习笔记 — 竞赛树
  6. 史兴国对谈罗金海:为什么Web3将是中国实现互联网领域弯道超车的绝世良机?
  7. shrink-to-fit 自适应宽度
  8. 微软云盘OneDrive和Dropbox云盘的比较分析
  9. i春秋python_用python爬取i春秋的课程
  10. 互联网的大动荡时代已来临!BAT站队不可避免?