在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获取URL中的参数数据
Dec 05 Javascript
extjs每个组件要设置唯一的ID否则会出错
Jun 15 Javascript
JQuery实现动态表格点击按钮表格增加一行
Aug 24 Javascript
javascript实现时间格式输出FormatDate函数
Jan 13 Javascript
JavaScript实现简单Tip提示框效果
Apr 20 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
Sep 14 Javascript
详解webpack+angular2开发环境搭建
Jun 28 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
Oct 31 Javascript
javascript性能优化之分时函数的介绍
Mar 28 Javascript
vue 弹框产生的滚动穿透问题的解决
Sep 21 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
Aug 22 Javascript
基于JavaScript实现年月日三级联动
Jun 22 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
中国收音机工业发展史
2021/03/02 无线电
php修改NetBeans默认字体的大小
2013/07/02 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
PHP中基本HTTP认证技巧分析
2015/03/16 PHP
My Desktop :) 桌面式代码
2008/12/29 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
JS实现DIV高度自适应窗口示例
2017/02/16 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
express默认日志组件morgan的方法
2018/04/05 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
python抓取京东商城手机列表url实例代码
2013/12/18 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
python issubclass 和 isinstance函数
2019/07/25 Python
python 进程间数据共享multiProcess.Manger实现解析
2019/09/23 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
ECCO爱步美国官网:来自丹麦的鞋履品牌
2016/11/23 全球购物
EJB的角色和三个对象
2015/12/31 面试题
PyQt 如何创建自定义QWidget
2021/03/24 Python
20年同学聚会邀请函
2014/02/04 职场文书
大一新生学期自我评价
2014/04/09 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
MySQL 全文索引使用指南
2021/05/25 MySQL
浅谈JavaScript作用域
2021/12/06 Javascript