在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的星级评分插件
Aug 12 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
Dec 24 Javascript
jQuery使用height()获取高度需要注意的地方
Dec 13 Javascript
javascript入门教程基础篇
Nov 16 Javascript
JavaScript中的各种操作符使用总结
May 26 Javascript
jQuery查找节点方法完整实例
Sep 13 Javascript
关于javascript事件响应的基础语法总结(必看篇)
Dec 26 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
Jun 11 Javascript
微信小程序实现图片上传、删除和预览功能的方法
Dec 18 Javascript
JavaScript设计模式之代理模式简单实例教程
Jul 03 Javascript
webpack中如何使用雪碧图的示例代码
Nov 11 Javascript
js瀑布流布局的实现
Jun 28 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 array_intersect()函数使用代码
2009/01/14 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
javascript中的括号()用法小结
2014/04/14 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
js style动态设置table高度
2014/10/21 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
JS实现的随机排序功能算法示例
2017/06/09 Javascript
利用C/C++编写node.js原生模块的方法教程
2017/07/07 Javascript
微信小程序日历组件使用方法详解
2018/12/29 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
Python时间的精准正则匹配方法分析
2017/08/17 Python
Python判断有效的数独算法示例
2019/02/23 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
全天然狗零食:Best Bully Sticks
2016/09/22 全球购物
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
交通事故协议书
2014/04/15 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
全陪导游词
2015/02/04 职场文书
2015年大学生村官工作总结
2015/04/21 职场文书
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android