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 相关文章推荐
JavaScript访问样式表代码
Oct 15 Javascript
写了10年的Javascript也未必全了解的连续赋值运算
Mar 25 Javascript
JS获取URL中的参数数据
Dec 05 Javascript
用javascript关闭本窗口不弹出询问框的方法
Sep 12 Javascript
js和jquery如何获取图片真实的宽度和高度
Sep 28 Javascript
jQuery+ajax中getJSON() 用法实例
Dec 22 Javascript
Node.js实现Excel转JSON
Apr 24 Javascript
简介JavaScript中Math.LOG10E属性的使用
Jun 14 Javascript
jquery将标签元素的高设为屏幕的百分比
Apr 19 jQuery
requireJS模块化实现返回顶部功能的方法详解
Oct 16 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
May 31 jQuery
vue项目实现设置根据路由高亮对应的菜单项操作
Aug 06 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
一个用于MySQL的PHP XML类
2006/10/09 PHP
php生成shtml类用法实例
2014/12/09 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
超级退弹代码
2008/07/07 Javascript
JS 实现完美include载入实现代码
2010/08/05 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
javascript闭包的理解
2015/04/01 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
深入解析Python中的__builtins__内建对象
2016/06/21 Python
python与C互相调用的方法详解
2017/07/14 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
巴西购物网站:Submarino
2020/01/19 全球购物
蔻驰英国官网:COACH英国
2020/07/19 全球购物
微型企业创业投资计划书
2014/01/10 职场文书
搞笑创意广告语
2014/03/17 职场文书
教师节促销方案
2014/03/22 职场文书
计生专干事迹
2014/05/28 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
离婚答辩状范文
2015/05/22 职场文书
八年级作文之感恩
2019/11/22 职场文书