在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去掉字符串里的所有空格
Feb 08 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
Apr 27 Javascript
浅谈JS日期(Date)处理函数
Dec 07 Javascript
Javascript核心读书有感之语言核心
Feb 01 Javascript
Jquery网页内滑动缓冲导航的实现代码
Apr 05 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
Jun 24 Javascript
js 动态给元素添加、移除事件的实现方法
Jul 19 Javascript
基于jquery实现多级菜单效果
Jul 25 jQuery
使用use注册Vue全局组件和全局指令的方法
Mar 08 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 jQuery
vue中$nextTick的用法讲解
Jan 17 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
Jun 10 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与SQL注入攻击[二]
2007/04/17 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
Javascript的构造函数和constructor属性
2010/01/09 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
AngularJS的内置过滤器详解
2015/05/14 Javascript
微信小程序 详解页面跳转与返回并回传数据
2017/02/13 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
Python创建xml的方法
2015/03/10 Python
python实现向ppt文件里插入新幻灯片页面的方法
2015/04/28 Python
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
win10下tensorflow和matplotlib安装教程
2018/09/19 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
python isinstance函数用法详解
2020/02/13 Python
python中return不返回值的问题解析
2020/07/22 Python
创先争优一句话承诺
2014/05/29 职场文书
承诺书格式范文
2014/06/03 职场文书
父亲节活动策划方案
2014/08/24 职场文书
数学教师求职信范文
2015/03/20 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
小平小道观后感
2015/06/09 职场文书