在vue+element ui框架里实现lodash的debounce防抖


Posted in Javascript onNovember 13, 2019

事情起因在:我使用element ui框架里的远程搜索框,在单选时,组件内部已经做了防抖,query是在一段时间内的字符串。但是在多选时,并没有做防抖,而是每输入一个字符都要向后台发一次请求,所以必须防抖,官方推荐使用lodash的debounce

在解决这个问题时,我遇到的坎儿主要有以下:

我首先在项目里用npm安装lodash,先全局安装,然后安装到项目

npm install -g lodash
npm install --save lodash

安装后,我就在我要用防抖的组件里,引入lodash

var lodash = require('lodash');

以下就开始了走弯路

我百度后,查询到debounce总和keyup一起使用,所以我就在我的搜索框里绑定了keyup事件,但是绑定的事件并没有生效,通过查询得知,在element ui封装了input,所以要在后面加上.native才可以覆盖原来的事件

<el-select
  v-model="AddCandidateFrom.follow_hr"
  filterable
  multiple
  placeholder="请选择跟进HR"
  @keyup.native="getRemoteFollow"
  :loading="followLoading"
  class="select-item">
  <el-option
    v-for="item in followOption"
    :key="item.value"
    :label="item.label"
    :value="item.value">
  </el-option>
</el-select>

keyup成功绑定事件后,我发现得到的结果并不是我想要的,因为keyup绑定事件里得到的参数是我在键盘里输入的一个字符,但我想要得到的是输入后的整个字符串。所以我就又开始使用watch监听this.AddCandidateFrom.follow_hr

监听this.AddCandidateFrom.follow_hr后,我发现并没有用,因为它代表的是多选框中已经选中了的字符串,正在输入的字符串不会记录进去,所以我又回退到使用远程搜索本身的方法,绑定remote-methods

<el-select
  v-model="AddCandidateFrom.follow_hr"
  filterable
  multiple
  remote
  placeholder="请选择跟进HR"
  :remote-method="getRemoteFollow"
  :loading="followLoading"
  class="select-item">
  <el-option
    v-for="item in followOption"
    :key="item.value"
    :label="item.label"
    :value="item.value">
  </el-option>
</el-select>

绑定了remote-method方法后,我就使用传统的方法定义绑定的方法(),没有使用es6简写的方法,这是因为,使用lodash.debounce返回的是一个函数。如果有参数,则在function空的形参列表里加入

getRemoteFollow: lodash.debounce(function () {
  console.log('111');
}, 300),

以上这篇在vue+element ui框架里实现lodash的debounce防抖就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jQuery的仿flash的广告轮播代码
Nov 04 Javascript
jquery设置元素的readonly和disabled的写法
Sep 22 Javascript
JavaScript之IE的fireEvent方法详细解析
Nov 20 Javascript
JS的document.all函数使用示例
Dec 30 Javascript
jquery实现点击消失的代码
Mar 03 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
Jul 18 Javascript
JavaScript AOP编程实例
Jun 16 Javascript
vue实现前进刷新后退不刷新效果
Jan 26 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
Sep 14 Javascript
用vue-cli开发vue时的代理设置方法
Sep 20 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
Jan 09 jQuery
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
Aug 06 Javascript
element实现合并单元格通用方法
Nov 13 #Javascript
vue之debounce属性被移除及处理详解
Nov 13 #Javascript
Vue的click事件防抖和节流处理详解
Nov 13 #Javascript
vue表单数据交互提交演示教程
Nov 13 #Javascript
解决vuex数据异步造成初始化的时候没值报错问题
Nov 13 #Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
Nov 13 #Javascript
基于vue-cli3和element实现登陆页面
Nov 13 #Javascript
You might like
php mssql 时间格式问题
2009/01/13 PHP
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
用js实现的抽象CSS圆角效果!!
2007/05/03 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
2013/07/08 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
JS基于VML技术实现的五角星礼花效果代码
2015/10/26 Javascript
JavaScript中eval函数的问题
2016/01/31 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
Javascript中的getter和setter初识
2017/08/17 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
如何基于python操作json文件获取内容
2019/12/24 Python
Pytorch训练过程出现nan的解决方式
2020/01/02 Python
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
德国购买健身器材:AsVIVA
2017/08/09 全球购物
2014年小学元旦活动方案
2014/02/12 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
大学专科自荐信
2014/06/17 职场文书
个人租房协议书范本
2014/09/30 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
Python数据结构之队列详解
2022/03/21 Python