vue的按钮点击节流

场景:

1、在实际使用中,当我们填写表单,点击按钮提交的时候,当接口没返回之前,迅速的点击几次,就会造成多次提交。

2、获取验证码,不频繁的获取。

3、弹幕不能频繁的发

基于这几个场景,对 element-ui 的按钮进行扩展 节流

主要使用到了 vue的

$listeners  $attrs
 

$listeners:子组件里面,获取父组件对子组件 v-on 的所有监听事件

$attrs: 包含了父作用域中不作为 prop 被识别 (且获取) 的特性绑定 (class 和 style 除外)。当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class 和 style 除外),并且可以通过 v-bind="$attrs" 传入内部组件——在创建高级别的组件时非常有用。

详细代码如下:

<template>
<el-button v-bind="$attrs" v-on="evet" :disabled="disabled"><slot></slot></el-button>
</template>
<script>
export default {
name:"throat-btn",
computed:{
evet(){
if(this.$listeners.click ){
this.$listeners.click = this.throat("click");
}
return this.$listeners;
},
disabled(){
if(this.timer){
return true;
}else{
return false;
}
}
},
data(){
return {
timer:null
}
},
methods:{
throat(method){
const me = this;
return (...args)=>{
if(!me.timer){
me.$emit(method,...args);
me.timer = setTimeout(() => {
me.timer = null;
}, me.$attrs.throat || 5000); //默认5s的,节流
}else{
me.$emit("droped",...args); //点击太频繁的事件提示
}
}
}
}
}
</script>

  

  

使用:

<template>
<div class="home"> <throatButton @click="customClick" :throat="5000" >默认按钮</throatButton>
<throatButton type="primary" @click="customClick">主要按钮</throatButton>
<throatButton type="success" disabled>成功按钮</throatButton>
<throatButton type="info" disabled>信息按钮</throatButton>
<throatButton type="warning" disabled>警告按钮</throatButton>
<throatButton type="danger" disabled>危险按钮</throatButton>
</div>
</template> <script>
// @ is an alias to /src
import throatButton from "@/components/throat-button.vue";
export default {
name: 'home',
components: {
throatButton
},
mounted(){ },
methods:{
customClick(e){
console.log("----------customClick----------",e);
},
onchange(e){
console.log("------onchange-------------",e);
}
}
}
</script>

  

vue基于 element ui 的按钮点击节流的更多相关文章

  1. 基于element UI 的上传插件

    为了不再重复的上传文件,做了一个统一选择文件和上传文件的 基于 element UI :http://element-cn.eleme.io 前端实现文件下载和拖拽上传 演示 用法 <uploa ...

  2. vue开源Element UI表单设计及代码生成器

    在日常的开发工作中,表单开发是较为繁琐且重复的.本文介绍一个我自己写的,提高开发效率的小工具. 1 可视化设计器 设计器基于Element UI ,可通过点击或拖拽的方式设计基本表单, 设计器生成的代 ...

  3. 关于vue.js element ui 表单验证 this.$refs[formName].validate()的问题

        方法使用前需了解: 来自”和“小编的小提示: 首先打印一下this.$refs[formName],检查是否拿到了正确的需要验证的form. 其次在拿到了正确的form后,检查该form上添加 ...

  4. 基于element ui的图片预览插件

    写插件很简单,满足两个条件即可,一.基本的逻辑思路,二.熟悉插件语法要求.本次Vue插件也比较简单,点击“查看图片”用轮播的方式限制用户上传的图片,如图: 项目采用的是vue-element-admi ...

  5. vue与element ui的el-checkbox的坑

    一,场景 通过使用checkbox,实现如图的场景, 点击某个tag,实现选中和非选中状态. 二, 官网的例子 通过切换checked值为true或者false来实现,一个checkbox的状态切换 ...

  6. vue.js+element ui Table+spring boot增删改查

    小白初学,不懂的还是太多了,找了好多资料才做出来的先记录一下 1.先用Spring boot创建一个包含了增删改查的项目 2.创建vue.js项目 3.安装Element UI (1)进入项目文件夹下 ...

  7. Vue框架Element UI教程-axios请求数据

    Element UI手册:https://cloud.tencent.com/developer/doc/1270 中文文档:http://element-cn.eleme.io/#/zh-CN gi ...

  8. 第五十三篇:Vue安装Element ui

    好家伙,之前写的一篇过时了,用不了了,更新一波 (已新建一个vue项目) 1. 在项目目录下执行:npm i element-ui -S 2. 在main.js中写入 import ElementUI ...

  9. UI单据按钮点击事件校验

    一.按钮点击前事务处理<BeforeEventProcess> public override void BeforeEventProcess(IPart part, string eve ...

随机推荐

  1. TP5单元测试

    tp5版本: 5.0.24 单元测试版本:1.* 1. 安装单元测试扩展: composer require topthink/think-testing .* 2.安装完毕,运行 php think ...

  2. 实现一个自己的IOC

    实现一个自己的IOC package com.IocExample; import java.lang.reflect.Constructor; import java.lang.reflect.In ...

  3. 深入浅出ES6教程『async函数』

    大家好,本人名叫苏日俪格,大家叫我 (格格) 就好,在上一章节中我们学到了Symbol & generator的用法,下面我们一起来继续学习async函数: async [ə'zɪŋk]:这个 ...

  4. Socket通信(1):搭建开发环境

    一. 准备工具 1. mac环境下的VMware Fusion, 下载地址:https://www.newasp.net/soft/462096.html 2. ubuntu 14.04 LTS, 不 ...

  5. naxsi-waf-with-ui :dockerfile

    scollazo/naxsi-waf-with-ui Dockerfile - Docker Hubhttps://hub.docker.com/r/scollazo/naxsi-waf-with-u ...

  6. 深度学习:21天实战caffe学习资源-4-环境安装

    使用anaconda3环境下的python2.7, 机器macos mojave 10.14 1.安装Xcode 首先现在app store中安装Xcode: 不然会有” framework not ...

  7. Qt tableView设置不可编辑

    main_ui.tableView_record->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToConten ...

  8. 算法习题---5.7丑数(Uva136)

    一:题目 丑数是指不能被除了2,,5以外的素数整除的数.将丑数从小到大排序 ,,,,,,,,,,,.... 求第1500个丑数 (一)求解方法 对于任意丑数x,他的2x,3x,5x都是丑数. 二:代码 ...

  9. Qt编写气体安全管理系统20-控制器管理

    一.前言 控制器管理,主要就是对控制器进行添加删除和修改,其中包括编号.端口名称.控制器名称.控制器地址.控制器型号.探测器数量这几个字段,端口名称表示当前控制器所属哪个端口,一个系统中可以有好多个端 ...

  10. window下安装docker

    下载docker toolbox https://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ 1,.双击安装DockerTool ...