在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 相关文章推荐
JavaScript Event学习第五章 高级事件注册模型
Feb 07 Javascript
验证手机号码的JS方法分享
Sep 10 Javascript
深入剖析JavaScript编程中的对象概念
Oct 21 Javascript
基于javascript编写简单日历
May 02 Javascript
10分钟掌握XML、JSON及其解析
Dec 06 Javascript
学习JavaScript图片预加载模块
Nov 07 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
Dec 18 Javascript
vuex中使用对象展开运算符的示例
Sep 25 Javascript
JS中的多态实例详解
Oct 15 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
Mar 18 Javascript
JavaScript常见鼠标事件与用法分析
Jan 03 Javascript
微信小程序实现发微博功能的示例代码
Jun 24 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循环获取GET和POST值的代码
2008/04/09 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
JSON格式化输出
2014/11/10 Javascript
javaScript中Math()函数注意事项
2015/06/18 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
根据Bootstrap Paginator改写的js分页插件
2016/12/25 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
Python实现的HTTP并发测试完整示例
2020/04/23 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
Opencv实现抠图背景图替换功能
2019/05/21 Python
python如何爬取网站数据并进行数据可视化
2019/07/08 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
《一株紫丁香》教学反思
2014/02/19 职场文书
合作协议书范文
2014/08/20 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
2014年收银工作总结
2014/11/13 职场文书
工作证明格式范文
2015/06/15 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers
Java对文件的读写操作方法
2022/04/29 Java/Android
详解Go语言中Get/Post请求测试
2022/06/01 Golang