美文网首页Vue2
vue节流全局指令超级简单

vue节流全局指令超级简单

作者: 江南永保春 | 来源:发表于2021-08-15 19:49 被阅读0次


    最近后台项目管理系统居多,一直用局部指令节流有些麻烦,这里贴出全局文本框用户输入后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、页面中使用:

    ```

       <el-input v-model="xxx.xxxxx"  v-debounce="自己的方法名">

    ```


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

    ```

        // 节流指令

      directives: {

        debounce: {

          inserted: function (el, binding) {

            let timer

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

              if (timer) {

                clearTimeout(timer)

              }

              timer = setTimeout(() => {

                binding.value()

              }, 500)

            })

          },

        },

      }

    ```

    使用方法:

    ```

    <el-input v-model="xxx.xxxxx"  v-debounce="页面中执行的方法名">

    ```


    三、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、使用

    ```

       <el-button :@click="getCodeMsgBtn" v-preventReClick>按钮</el-button>

    ```

    相关文章

      网友评论

        本文标题:vue节流全局指令超级简单

        本文链接:https://www.haomeiwen.com/subject/nnaubltx.html