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 相关文章推荐
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
Mar 09 Javascript
设置下载不需要倒计时cookie(倒计时代码)
Nov 19 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
Jun 27 Javascript
js弹出div并显示遮罩层
Feb 12 Javascript
理解Javascript图片预加载
Feb 23 Javascript
js实现动态创建的元素绑定事件
Jul 19 Javascript
jQuery实现别踩白块儿网页版小游戏
Jan 18 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
Sep 07 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
Dec 21 Javascript
jQuery 点击获取验证码按钮及倒计时功能
Sep 20 jQuery
基于iview的router常用控制方式
May 30 Javascript
vue 实现用户登录方式的切换功能
Apr 14 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学习笔记之 函数声明(二)
2011/06/09 PHP
php错误级别的设置方法
2013/06/17 PHP
深入解析php中的foreach问题
2013/06/30 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
一个经典的PHP验证码类分享
2014/11/18 PHP
Linux中为php配置伪静态
2014/12/17 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
Python使用multiprocessing创建进程的方法
2015/06/04 Python
Python实现获取邮箱内容并解析的方法示例
2018/06/16 Python
Django框架模板注入操作示例【变量传递到模板】
2018/12/19 Python
pycharm打开命令行或Terminal的方法
2019/01/16 Python
通过python实现弹窗广告拦截过程详解
2019/07/10 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
wxPython实现列表增删改查功能
2019/11/19 Python
python中slice参数过长的处理方法及实例
2020/12/15 Python
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
会计与审计专业大专生求职信
2013/10/03 职场文书
土建施工员岗位职责
2014/07/16 职场文书
2014年教师学期工作总结
2014/11/08 职场文书
2014年学生工作总结
2014/11/20 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
了解Redis常见应用场景
2021/06/23 Redis
Pytest中conftest.py的用法
2021/06/27 Python
JUnit5常用注解的使用
2021/07/02 Java/Android