在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 相关文章推荐
Prototype PeriodicalExecuter对象 学习
Jul 19 Javascript
一些常用且实用的原生JavaScript函数
Sep 08 Javascript
基于jQuery的投票系统显示结果插件
Aug 12 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
Aug 24 Javascript
jquery实现树形二级菜单实例代码
Nov 20 Javascript
JavaScript实现定时隐藏与显示图片的方法
Aug 06 Javascript
JQueryDOM之样式操作
Mar 27 jQuery
微信小程序图表插件wx-charts用法实例详解
May 20 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
Sep 23 Javascript
JavaScript TAB栏切换效果的示例
Nov 05 Javascript
一行JavaScript代码如何实现瀑布流布局
Dec 11 Javascript
Vue项目中如何封装axios(统一管理http请求)
May 02 Vue.js
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测试硬盘写入速度示例
2014/01/27 PHP
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
JavaScript面向对象编程
2008/03/02 Javascript
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
react项目从新建到部署的实现示例
2021/02/19 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
python异常触发及自定义异常类解析
2019/08/06 Python
python3 深浅copy对比详解
2019/08/12 Python
详解Python3定时器任务代码
2019/09/23 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
新闻专业个人自我评价
2013/09/21 职场文书
个人违纪检讨书
2014/09/15 职场文书
关于环保的广播稿
2015/12/17 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL