小程序开发|小程序制作|小程序开发网

搜索

vue节流全局指令超级简单

2022-6-2 17:26| 发布者: yangyuan| 查看: 330| 评论: 0

摘要: 最近后台项目管理系统居多,一直用局部指令节流有些麻烦,这里贴出全局文本框用户输入后0.8秒执行方法的节流指令 和 按钮节流的点击事件一、输入框节流外部引入指令方式: 1.1 : 新建debounce.js文件:import Vue


最近后台项目管理系统居多,一直用局部指令节流有些麻烦,这里贴出全局文本框用户输入后0.8秒执行方法的节流指令 和 按钮节流的点击事件



一、输入框节流外部引入指令方式:

 1.1 : 新建debounce.js文件:

import Vue from 'vue'

// 自定义防抖

Vue.directive('debounce',{

  inserted: function (el, binding) {

    let timer

    el.addEventListener('keyup', () => {

      if (timer) {

        clearTimeout(timer)

      }

      timer = setTimeout(() => {

        binding.value()

      }, 800)

    })

  }

})

1.2、main.js中引入:

import "@/utils/debounce.js"

对,就这么简单

1.3、页面中使用:

   


二、贴出vue单个页面上 input 节流的局部指令:

    // 节流指令

  directives: {

    debounce: {

      inserted: function (el, binding) {

        let timer

        el.addEventListener('keyup', () => {

          if (timer) {

            clearTimeout(timer)

          }

          timer = setTimeout(() => {

            binding.value()

          }, 500)

        })

      },

    },

  }

使用方法:



三、button 按钮的节流方法

3.1、新建 preventReClick.js 文件:

import Vue from 'vue'

//按钮节流

const preventReClick = Vue.directive('preventReClick', {

  inserted: function (el, binding) {

    el.addEventListener('click', () => {

      if (!el.disabled) {

        el.disabled = true

        setTimeout(() => {

          el.disabled = false

        }, binding.value || 3000)

      }

    })

  }

});

export { preventReClick }

3.2、main.js中:

import { preventReClick }from '@/utils/preventReClick'

Vue.prototype.$preventReClick = preventReClick; // 节流函数

3.3、使用

   按钮


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部