在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 相关文章推荐
JS加ASP二级域名转向的代码
May 17 Javascript
16个最流行的JavaScript框架[推荐]
May 29 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
Aug 22 Javascript
jQuery遍历之next()、nextAll()方法使用实例
Nov 08 Javascript
微信小程序实战之自定义抽屉菜单(7)
Apr 18 Javascript
js删除数组中的元素delete和splice的区别详解
Feb 03 Javascript
解决vue-cli webpack打包后加载资源的路径问题
Sep 25 Javascript
微信小程序如何使用globalData的方法
Jun 06 Javascript
解决vue的router组件component在import时不能使用变量问题
Jul 26 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
Oct 27 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
Feb 24 Javascript
Promise静态四兄弟实现示例详解
Jul 07 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
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
php 生成加密公钥加密私钥实例详解
2017/06/16 PHP
jQuery 隔行换色 支持键盘上下键,按Enter选定值
2009/08/02 Javascript
javascript 流畅动画实现原理
2009/09/08 Javascript
修改好的jquery滚动字幕效果实现代码
2011/06/22 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
jQuery随机切换图片的小例子
2013/04/18 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
2014/06/26 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
js实现交通灯效果
2017/01/13 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
详解Vue用axios发送post请求自动set cookie
2017/05/10 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
Javascript 对象(object)合并操作实例分析
2019/07/30 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
Python2中的raw_input() 与 input()
2015/06/12 Python
Python使用gensim计算文档相似性
2016/04/10 Python
python实现按首字母分类查找功能
2019/10/31 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
为什么需要版本控制
2016/10/28 面试题
代理班主任的自我评价
2014/02/04 职场文书
财政局长个人总结
2015/03/04 职场文书