在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 常用操作方法
Jan 28 Javascript
Javascript 函数中的参数使用分析
Mar 27 Javascript
jquery插件制作 手风琴Panel效果实现
Aug 17 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
Mar 11 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
Jun 24 Javascript
javascript动画系列之模拟滚动条
Dec 13 Javascript
基于JQuery的购物车添加删除以及结算功能示例
Mar 08 Javascript
基于jquery实现多选下拉列表
Aug 02 jQuery
简单谈谈JS中的正则表达式
Sep 11 Javascript
vue源码解析之事件机制原理
Apr 21 Javascript
javascript实现弹出层效果
Dec 10 Javascript
详解JavaScript中精度失准问题及解决方法
Feb 04 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 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
PHP内存溢出优化代码详解
2021/02/26 PHP
javascript 面向对象编程 function也是类
2009/09/17 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
2014/09/01 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
jscript读写二进制文件的方法
2015/04/22 Javascript
举例说明JavaScript中的实例对象与原型对象
2016/03/11 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
2020/04/27 Javascript
简单学习Python time模块
2016/04/29 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
美国百货齐全的精品网站,提供美式风格的产品:Overstock.com
2016/07/22 全球购物
.NET面试问题集
2015/12/08 面试题
园长自我鉴定
2013/10/06 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
股东出资证明书范例
2014/10/04 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
2014年统计工作总结
2014/11/21 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
运动会通讯稿100字
2015/07/20 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
六年级作文之家庭作文
2019/12/12 职场文书
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
2021/04/24 Python
windows安装python超详细图文教程
2021/05/21 Python