自定义指令directives:防抖,节流,element-ui的无限滚动在el-table上使用的封装

news/2025/2/13 15:45:56/

vue官网对于自定义指令的介绍
添加链接描述

除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令。注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件。然而,有的情况下,你仍然需要对普通 DOM 元素进行底层操作,这时候就会用到自定义指令,
自定义局部指令和自定义全局指令:
1.自定义局部指令:在options api选项中的directives中设置
2.自定义全局指令:在app的directive的方法
官网给出的是一个input框聚焦案例,不太明白怎么用的建议去看一下,链接就是上面的那个
钩子函数:
一个指令定义对象可以提供如下几个钩子函数
1.bind:只调用一次,指令第一次绑定到元素时调用,在这里可以进行一次性的初始化设置
2.inserted:被绑定元素插入父节点时调用(保证父节点存在,但不一定已被插入文档中)
3.update:所在组件的vnode更新时调用,但是可能发生在其子vnode更新之前,指令的值可能发生了改变,也可能没有,但是你可以通过比较更新前后的值来忽略不必要的模板更新
4.componentUpdated:指令所在组件的vnode及其子vnode全部更新后调用
5.unbind:只调用一次,指令与元素解绑时调用
在这里插入图片描述

下面是指令的封装:
1.节流 2.防抖 3.element-ui的无限滚动在el-table上使用的封装
1.节流

// 引入节流插件
import throttleCall from 'lodash/throttle'
export default{bind(el,binding,vnode){const fn=binding.value // 通过参数拿到click事件触发的函数// 节流处理后的函数,默认3000msconst throttled=throttleCall(fn,3000,{leading:true,trailing:false})el.addEventListener('click',throttled) // 绑定上el._throttled=throttled // 把函数赋值到el 对象上,方便其他钩子函数访问},unbind(el){// 指令与元素解绑时,解绑事件el.removeEventListener('click',el_debounced)}
}

1.全局引入在main.js

import throttleClick from './drectives/throttle-click'
Vue.directive('throttle-click',throttleClick)

然后就可以直接使用

<el-button v-throttle-click="test">节流测试</el-button>

2.局部注册,在用到的组件内注册并使用,使用如上,下面局部注册引用

import throttleClick from '@drectives/throttle-click'
export default{directives:{throttleClick}
}

2.基于防抖在按钮不可点击的时候同时置灰按钮

export default {inserted(el,binding){el.addEventListener('click',(e)=>{el.classList.add('is-disabled')el.disabled=truesetTimeout(()=>{el.disabled=falseel.classList.remove('is-disabled')},3000)})}
} 

1.全局引入在main.js

import noMoreClick from './drectives/no-more-click'
Vue.directive('no-more-click',noMoreClick)

然后就可以直接使用

<el-button v-no-more-click="test">节流测试</el-button>

2.局部注册,在用到的组件内注册并使用,使用如上,下面局部注册引用

import noMoreClick from '@drectives/no-more-click'
export default{directives:{noMoreClick}
}

3.table-infinite-scroll 对element-ui的无限滚动在el-table使用的封装

在这里插入代码片

http://www.ppmy.cn/news/859105.html

相关文章

Java设计模式-责任链(Chain of Responsibility)模式

介绍 Java责任链&#xff08;Chain of Responsibility&#xff09;设计模式是指很多处理对象构成一个链&#xff0c;链中前一个对象指向后一个对象。请求在链中传递&#xff0c;一个请求可以被一个或者多个对象处理。调用方&#xff08;即客户端&#xff09;不知道请求会被链中…

迁移C盘到SSD硬盘后启动系统黑屏只有鼠标

系统迁移克隆分区后的启动问题 蓝屏 黑屏 只剩鼠标指针 第一步: 修复UEFI引导 第二步&#xff1a;修改注册表&#xff1a; 简单来说就是进入PE系统然后运行RegEdit调出注册表&#xff0c; 选中HKEY_LOCAL_MACHINE&#xff0c; 打开菜单操作:文件-加载配置单元&#xff0c;…

Arch Linux 系统迁移

文章目录 备份 Arch Linux 系统安装 pigz安装 zstdpigz 打包 Arch Linuxzstd 打包 Arch Linux 给新盘分区或挂载使用 fdisk 等磁盘工具分区挂载新硬盘分区到 /mnt/arch pigz恢复 ArchLinux 系统zstd恢复 ArchLinux 系统创建刚才排除的文件夹获取 UUID修改 /etc/fstab 挂载文件更…

电脑使用分区助手进行c盘的迁移填坑(系统盘迁移到固态硬盘)

1、磁盘迁移 电脑使用傲梅分区助手进行一个c盘的迁移&#xff0c;&#xff08;假设你已经把新的硬盘安装好了&#xff09;进入软件后点击“迁移系统到固态硬盘”后按照提示操作即可&#xff0c;最后一步因为没有PE系统&#xff0c;所以选择了另外一个。然后正常重启&#xff0…

克隆硬盘后进不去系统_Windows 10克隆后ssd硬盘不能引导启动

吴川 华南区技术负责人 概要 如今大部分用户都喜欢把系统直接从旧硬盘克隆到SSD上,但克隆系统后可能会出现ssd硬盘不能引导启动的问题。本文将针对这个问题,为大家分析原因并提供解决方案。 一、Windows 10克隆到SSD后无法启动的原因和解决方案 原因1:没有把SSD设置为第一启…

系统迁移到ssd 开启哪些服务器,如何使用分区助手完美迁移系统到SSD固态硬盘...

自从SSD固态硬盘出世以来&#xff0c;一直都被持续关注着&#xff0c;SSD的性能优势让无数用户起了将操作系统迁移到SSD的心思&#xff0c;直接后果就是让无数机械硬盘为止黯然退场&#xff0c;很多软件都可以做到系统迁移&#xff0c;然而&#xff0c;被完美迁移的系统却不是多…

Ubuntu2204系统迁移·双系统

目录 一、前言 二、准备工作 1. 制作Ubuntu系统的启动盘 2. 查看系统分区和挂载情况 3. 将新固态硬盘安装在电脑主板上 三、对原先的系统进行打包 1. 从BIOS进入启动盘Ubuntu&#xff0c;选择仅试用&#xff0c;不要选安装。 2. 挂载要备份的盘 3. 对/目录进行打包 4…

华为服务器mbr合适装系统教程,服务器设置硬盘引导盘

服务器设置硬盘引导盘 内容精选 换一换 使用外部镜像文件创建私有镜像时&#xff0c;以上相关步骤操作需要在虚拟机内部完成&#xff0c;强烈建议您在原平台的虚拟机实施修改后&#xff0c;再导出镜像。使用Windows外部镜像文件创建私有镜像时&#xff0c;关于Guest OS driver&…