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即可

相关推荐
Bigger4 小时前
Tauri (26)——托盘图标总对不上系统主题?一行 Template Image 搞定
前端·rust·app
To_OC4 小时前
从一次栈溢出报错说起,我把递归彻底扒明白了
javascript·算法·程序员
kyriewen6 小时前
面试官问你:“AI 能写 80% 的代码了,公司为什么还需要你?”
前端·javascript·面试
甲维斯7 小时前
又升级咯!坦克大战2026,科技与复古并存!
前端·人工智能·游戏开发
Goodbye9 小时前
从 Token 到 Embedding:LLM 核心基础深度解析
javascript·人工智能
用户938515635079 小时前
工具调用背后:LLM 如何突破“缸中大脑”,操控真实世界?
javascript·人工智能
Goodbye9 小时前
从函数到智能:LLM Tool Use 深度解析
javascript·人工智能
半个落月9 小时前
大模型到底是怎么“调用工具”的?从一个 Node.js Demo 看懂 Tool Use
javascript·人工智能
搬砖的码农9 小时前
(08)为什么我的 Agent 一跑后台服务就卡死
前端·agent·ai编程