在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 checkbox(复选框) 使用集锦
Apr 28 Javascript
用jquery与css打造个性化的单选框和复选框
Oct 20 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
Oct 05 Javascript
node.js实现复制文本到剪切板的功能
Jan 23 Javascript
Vue.js中的图片引用路径的方式
Jul 28 Javascript
浅谈JS中的反柯里化( uncurrying)
Aug 17 Javascript
总结js函数相关知识点
Feb 27 Javascript
VUE写一个简单的表格实例
Aug 06 Javascript
JavaScript实现图片上传并预览并提交ajax
Sep 30 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
Apr 27 Javascript
Vue循环中多个input绑定指定v-model实例
Aug 31 Javascript
微信小程序实现锚点跳转
Nov 23 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设计模式 Composite (组合模式)
2011/06/26 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
js右键菜单效果代码
2007/07/21 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
2016/01/12 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
超全面的JavaScript开发规范(推荐)
2017/01/21 Javascript
JS中的三个循环小结
2017/06/20 Javascript
基于jQuery Easyui实现登陆框界面
2017/07/10 jQuery
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
vue组件watch属性实例讲解
2017/11/07 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
vue路由插件之vue-route
2019/06/13 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
python实现代码行数统计示例分享
2014/02/10 Python
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
python列表操作之extend和append的区别实例分析
2015/07/28 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
python 伯努利分布详解
2020/02/25 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
什么是URL
2015/12/13 面试题
扬尘污染防治方案
2014/06/15 职场文书
英语教师求职信
2014/06/16 职场文书
欠条样本
2015/07/03 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server
Redis实现订单过期删除的方法步骤
2022/06/05 Redis