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实现图片延迟加载方法汇总(三种方法)
Aug 27 Javascript
Jquery attr()方法 属性赋值和属性获取详解
Apr 15 Javascript
jQuery验证插件validate使用详解
May 11 Javascript
AngularJS国际化详解及示例代码
Aug 18 Javascript
vue2.0多条件搜索组件使用详解
Mar 26 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
Nov 08 Javascript
vue获取当前点击的元素并传值的实例
Mar 09 Javascript
详解vue中的computed的this指向问题
Dec 05 Javascript
微信小程序实现获取小程序码和二维码java接口开发
Mar 29 Javascript
js定义类的方法示例【ES5与ES6】
Jul 30 Javascript
微信小程序使用蓝牙小插件
Sep 23 Javascript
vue 使用lodash实现对象数组深拷贝操作
Sep 10 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 常见郁闷问题答解
2006/11/25 PHP
PHP无敌近乎加密方式!
2010/07/17 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
详解PHP PDO简单教程
2019/05/28 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
Vue源码解读之Component组件注册的实现
2018/08/24 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
python随机生成指定长度密码的方法
2015/04/04 Python
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
python实现QQ批量登录功能
2019/06/19 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
简单了解python变量的作用域
2019/07/30 Python
django 模版关闭转义方式
2020/05/14 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
当当网软件测试笔试题
2015/11/24 面试题
协议书样本
2014/04/23 职场文书
小学优秀辅导员事迹材料
2014/05/11 职场文书
研究生求职自荐书
2014/06/23 职场文书
建筑安全生产责任书
2014/07/22 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS