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中的delete使用详解
Apr 11 Javascript
js通过地址栏给action传值(中文乱码全是问号)
May 02 Javascript
jQuery EasyUi实战教程之布局篇
Jan 26 Javascript
JavaScript数据结构与算法之栈与队列
Jan 29 Javascript
AngularJS 视图详解及示例代码
Aug 17 Javascript
Javascript中return的使用与闭包详解
Jan 11 Javascript
判断div滑动到底部的scroll实例代码
Nov 15 Javascript
react-redux中connect的装饰器用法@connect详解
Jan 13 Javascript
Vue开发之watch监听数组、对象、变量操作分析
Apr 25 Javascript
jQuery控制input只能输入数字和两位小数的方法
May 16 jQuery
探索JavaScript中私有成员的相关知识
Jun 13 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
Sep 09 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
网站当前的在线人数
2006/10/09 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
2014/11/18 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
javascript读写json示例
2014/04/11 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
简单实现js无缝滚动效果
2017/02/05 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
python针对不定分隔符切割提取字符串的方法
2018/10/26 Python
详解python opencv、scikit-image和PIL图像处理库比较
2019/12/26 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
Python日志器使用方法及原理解析
2020/09/27 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
药学专业个人的自我评价
2013/12/31 职场文书
经典大学生求职信范文
2014/01/06 职场文书
sql注入教程之类型以及提交注入
2021/08/02 MySQL
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android
python中urllib包的网络请求教程
2022/04/19 Python
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js