Vue3自定义全局指令批量注册

指令封装代码:

TypeScript 复制代码
import type { App } from "vue";

const content ={
    mounted(el : any, binding : any) {
        console.dir(binding.value);
        el.remove();
    }
};

const operate = {
    mounted(el : any, binding : any) {
        console.dir(binding.value);
        el.remove();
    }
};

const directives : any = {
    content,
    operate
}

/*
*  指令的完整生命周期
  // 在绑定元素的 attribute 前
  // 或事件监听器应用前调用
  created(el, binding, vnode, prevVnode) {
    // 下面会介绍各个参数的细节
  },
  // 在元素被插入到 DOM 前调用
  beforeMount(el, binding, vnode, prevVnode) {},
  // 在绑定元素的父组件
  // 及他自己的所有子节点都挂载完成后调用
  mounted(el, binding, vnode, prevVnode) {},
  // 绑定元素的父组件更新前调用
  beforeUpdate(el, binding, vnode, prevVnode) {},
  // 在绑定元素的父组件
  // 及他自己的所有子节点都更新后调用
  updated(el, binding, vnode, prevVnode) {},
  // 绑定元素的父组件卸载前调用
  beforeUnmount(el, binding, vnode, prevVnode) {},
  // 绑定元素的父组件卸载后调用
  unmounted(el, binding, vnode, prevVnode) {}
* */

export function setDirective( app : App<Element>) {
    Object.keys(directives).forEach( (key: string) => {
        app.directive(key, directives[key])
    })
}

全局挂载:

TypeScript 复制代码
import { setDirective } from '@/utils/PowerAuth'
const app = createApp(App);
setDirective(app);

指令使用:

html 复制代码
<template>
  <div>
    <div v-content>需要权限</div>
    <div>无需权限</div>
  </div>
</template>

效果

提示:页面直接在元素上像使用v-if那样v-xxx即可

相关推荐
凌晨起床10 小时前
前端开发规范
前端
与妖为邻11 小时前
HTML5动态时间显示组件
javascript·css·css3
Cache技术分享11 小时前
247. Java 集合 - 为什么要远离 Stack 类?
前端·后端
●VON11 小时前
Electron for HarmonyOS 开发环境搭建
javascript·electron·harmonyos
v***913011 小时前
Spring+Quartz实现定时任务的配置方法
android·前端·后端
Irene199111 小时前
JavaScript 常见类数组对象对比(附:具有默认迭代器的数据类型详解)
javascript·类数组对象
charlie11451419111 小时前
面向C++程序员的JavaScript 语法实战学习4
开发语言·前端·javascript·学习·函数
万少11 小时前
上架元服务-味寻纪 技术分享
前端·harmonyos
想不明白的过度思考者11 小时前
Spring Web MVC从入门到实战
java·前端·spring·mvc
AAA简单玩转程序设计12 小时前
C++进阶小技巧:让代码从"能用"变"优雅"
前端·c++