vue输入框使用模糊搜索功能的实现代码


Posted in Javascript onMay 26, 2020

实现原理:

利用js的 indexOf 方法可返回某个指定的字符串值在字符串中首次出现的位置。

模板中的代码

<div class="search">
<!--输入框使用的是vant的输入框组件-->
	<van-search
  @input="autoSearch"
  v-model="value"
  placeholder="请输入搜索关键词"
  style="width:90%; display:inline-block;"
 />
  <span>搜索</span>
 </div>
<!--展示数据-->
<ul
	v-for="(item) in allArea"
 :key="item.communityId"
 >
 <li v-if="allNewArea.length != 0">{{ item.communityName }}</li>
  <li v-else>{{ item.communityName }}</li>
</ul>

js代码

getAreaDetail () { // 获取数据
  this.$http({
  method: 'post',
  url: '/appProperty/getCommunity',
  }).then(res => {
  this.allArea = res.data
  this.allNewArea = res.data
  })
 },
 autoSearch () { // 模糊搜索加节流(500ms触发一次)
  var allowPass = true
  if (!allowPass) {
  return
  }
  setTimeout(() => {
  allowPass = false
  this.allArea = [];
  this.allNewArea.filter(item => {
   if (item.communityName.indexOf(this.value) !== -1) { // 此处也可使用js的 search 方法实现indexOf 一样效果
   this.allArea.push(item);
   }
  })
  }, 500);
 },

拓展

节流函数 节省流量节省内存性能的一种函数,可以理解为是一种性能优化方案

//首先定义一个全局变量 当浏览器窗口大小发生变化也就是重新计算窗口大小的时候触发
 var canRun = true;
 window.onresize = function () {
  if (!canRun) {
  return
  }
  canRun = false//设置一个定时器进行轮询操作
  setTimeout(function () {//这是要做的事情
  console.log("函数节流")//最后记得重新赋值true继续让他取反
  canRun = true//每隔1000毫秒也就是1秒钟就执行一次
  }, 1000)
 }

防抖函数 当事件触发完成之后再延迟触发,并且只触发一次;如果在触发完成之前再次触发,则会再次刷新延迟

//定义方法即要做的事情
 function fun(){
 console.log('onresize')
 }
//定义事件触发要执行的方法,两个参数分别是传入的要做的事情和定时器的毫秒数
function debounce (fn, delay) {//定义一个变量作为等会清除对象
 var handle;
//这里用到了闭包,一个函数里面return另一个函数,变量相互牵引导致垃圾回收机制不会销毁handle变量
 return function () {


//在这里一定要清除前面的定时器,然后创建一个新的定时器
 clearTimeout(handle) 


//最后这个定时器只会执行一次也就是事件触发完成之后延迟500毫秒再触发(这里的变量赋值是跟定时器建立连接,进行地址赋值,一定要重新赋值给handle 
 handle = setTimeout(function () {
  fn()
 }, delay)
 }
}
//给浏览器添加监听事件resize
window.addEventListener('resize', debounce(fun, 500));

两者区别

  • 防抖函数和节流函数都是用来提升性能优化及用户体验的一种方案;
  • 防抖函数只会执行一次,且是最后触发的那一次,而节流函数会规律性的执行多次;

总结

到此这篇关于vue输入框使用模糊搜索功能的实现代码的文章就介绍到这了,更多相关vue输入框模糊搜索内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
Extjs学习笔记之三 extjs form更多的表单项
Jan 07 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
Jan 24 Javascript
当鼠标移动时出现特效的JQuery代码
Nov 08 Javascript
js实现大转盘抽奖游戏实例
Jun 24 Javascript
Ionic快速安装教程
Jun 03 Javascript
Node.js connect ECONNREFUSED错误解决办法
Sep 15 Javascript
vue组件间通信子与父详解(二)
Nov 07 Javascript
Vue监听事件实现计数点击依次增加的方法
Sep 26 Javascript
基于JS实现web端录音与播放功能
Apr 17 Javascript
javascript实现抢购倒计时程序
Aug 26 Javascript
JavaScript代码异常监控实现过程详解
Feb 17 Javascript
Nest.js参数校验和自定义返回数据格式详解
Mar 29 Javascript
jQuery弹框插件使用方法详解
May 26 #jQuery
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
May 26 #Javascript
微信小程序实现弹框效果
May 26 #Javascript
微信小程序自定义弹出层效果
May 26 #Javascript
详解JSON.stringify()的5个秘密特性
May 26 #Javascript
微信小程序实现简单文字跑马灯
May 26 #Javascript
微信小程序实现带放大效果的轮播图
May 26 #Javascript
You might like
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
dwr spring的集成实现代码
2009/03/22 Javascript
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
浅谈下拉菜单中的Option对象
2015/05/10 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
微信小程序实现点赞、取消点赞功能
2018/11/02 Javascript
GOJS+VUE实现流程图效果
2018/12/01 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
Sanic框架Cookies操作示例
2018/07/17 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
2018/10/30 Python
pycharm打开命令行或Terminal的方法
2019/01/16 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
Python PO设计模式的具体使用
2019/08/16 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
西班牙国家航空官方网站:Iberia
2017/11/16 全球购物
初一学生评语大全
2014/04/24 职场文书
设计大赛策划方案
2014/06/13 职场文书
学生顶撞老师的检讨书
2014/09/17 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
python - asyncio异步编程
2021/04/06 Python
vue自定义右键菜单之全局实现
2022/04/09 Vue.js
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript