首页 > 其他分享 >vue自定义指令(防抖)

vue自定义指令(防抖)

时间:2023-08-10 16:35:26浏览次数:39  
标签:el 防抖 vue 自定义 debounce binding timer value

import Vue from 'vue'

/**
 * 按钮防抖,300毫秒内只触发一次请求
 * 区分了一下传参和不传参的情况
 */

// 不传参数,用法:v-debounce="test_debounce"
Vue.directive('debounce', {
 inserted: function(el, binding) {
  let timer
  el.addEventListener('click', () => {
   if (timer) {
    clearTimeout(timer)
   }
   console.log(binding.value)
   timer = setTimeout(() => {
    binding.value()
   }, 300)
  })
 },
})

// 传入参数,用法:v-debounce="{ handler: test_debounce, params: '传入的参数' }"
Vue.directive('params-debounce', {
 inserted: function(el, binding) {
  let timer
  el.addEventListener('click', () => {
   if (timer) {
    clearTimeout(timer)
   }
   timer = setTimeout(() => {
    binding.value.handler(binding.value.params)
   }, 300)
  })
 },
})

ps:记得在main.js中引入

标签:el,防抖,vue,自定义,debounce,binding,timer,value
From: https://www.cnblogs.com/lyt520/p/17620714.html

相关文章

  • npm uninstall -g @vue/cli 命令卸载脚手架失败
     解决方法如下:1、执行:npmconfigls-l命令;在展示信息的userconfig键值中找到.npmrc文件的路径;将.npmrc文件删除。查询结果如下: 2、执行:wherevue命令;删除查询出的两个文件。文件如下图: 3、执行:vue-V命令。发现vue命令已经不可用,说明已经删除成功。 ......
  • 定制 ChatGPT 以满足您的需求 自定义说明
    推荐:使用NSDT场景编辑器快速助你搭建可二次编辑的3D应用场景20月<>日,OpenAI 宣布他们正在引入带有自定义说明的新流程,以根据您的特定需求定制ChatGPT。什么是自定义说明?新的测试版自定义指令功能旨在通过防止用户在聊天会话之间重复常用指令来帮助用户充分利用ChatGPT。......
  • vue3源码入口
    vue有两个阶段  分为编译时和运行时webpack  把vue模板编译生成对应的js代码,vue组件组件对应的template模板会被编译器转化为render函数。 运行时编译后代码执行render函数并返回VNode,最后将VNode渲染成真实的DOM节点createApp>ensureRenderer>createRenderer>ba......
  • 精简的Vue Elenent ui界面
    仓库地址:https://gitee.com/JSTGitee/element-jst-admin 登录  首页   表格   前言该方案作为一套多功能的后台框架模板,适用于绝大部分的后台管理系统开发。基于Vue2,使用vue-cli2脚手架,引用Elementui组件库,方便开发快速简洁好看的组件。 功能......
  • Vue3中的defineProps方法
    1.什么是definePropsdefineProps是Vue3中的一种新的组件数据传递方式,可以用于在子组件中定义接收哪些父组件的props。当父组件的props发生变化时,子组件也会随之响应。2.如何使用defineProps?在子组件中可以使用defineProps声明该组件需要接收的props,它需要传递一个包含props字段......
  • Sharding自定义分片策略
    公司分库分表使用用户id,主键后3位拼接用户id后三位,现把相关分片规则自定义简易组件使用一、参数配置引用者可以配置主键字段与用户字段命名,配置分片日志记录等packagecom.ypshengxian.shardingslice.properties;importorg.springframework.beans.factory.annotation.Val......
  • vue cli 解决浏览器缓存问题
    在vue打包时会遇到前端明明发布了,但是浏览器却没有更新。需要强制刷新才能看到最新的内容。解决方法一加时间戳后缀在vue.config.js的文件中加入constTimestamp=newDate().getTime();module.exports={configureWebpack:{//webpack配置output:{//输出重构......
  • 利用pytorch自定义CNN网络(三):构建CNN模型
    本文是利用pytorch自定义CNN网络系列的第三篇,主要介绍如何构建一个CNN网络,关于本系列的全文见这里。笔者的运行设备与软件:CPU(AMDRyzen™54600U)+pytorch(1.13,CPU版)+jupyter;本文所用到的资源:链接:https://pan.baidu.com/s/1WgW3IK40Xf_Zci7D_BVLRg提取码:12121.如何......
  • 使用vue+openLayers开发离线地图以及离线点位的展示
    1.下载引入到需要的组件中npminstallol2.需要用到的api...(根据开发需求以及实际情况进行引入)importolfrom"ol";import"ol/ol.css";importMapfrom"ol/Map";importViewfrom"ol/View";importFeaturefrom"ol/Feature";importPoin......
  • abp-vnext-pro 实战(六,vue 前端状态pinia)
    在login的时候把所有写入全局store,console.log('----------------从数据库获取字典--------------------');constappStore=useAppStore();constdataDictionaryServiceProxy=newDataDictionaryServiceProxy();constdetailInput=new......