Vue3自定义指令!!!

通过自定义指令实现菜单显示和权限控制问题。

一、新建一个在src目录下创建包directives,在包中创建一个ts文件。

import { useStore } from "@/store/pinia";function hasRoles(role: any) {const pinaRoles = useStore().roles;if (typeof role === "string") {return pinaRoles.includes(role);} else if (Array.isArray(role)) {return pinaRoles.some((item) => role.includes(item));} else {return false;}
}
function hasPermissions(permissions: any) {const pinaPermissions = useStore().permissions;if (typeof permissions === "string") {return pinaPermissions.includes(permissions);} else if (Array.isArray(permissions)) {return pinaPermissions.some((item) => permissions.includes(item));} else {return false;}
}
export default {mounted(el: any, binding: any) {let type = binding.arg;if (type === "role") {if (!hasRoles(binding.value)) {el.remove();}} else {if (!hasPermissions(binding.value)) {el.remove();}}},
};

二、在main.ts中引入和使用自定义组件。

import { createApp } from "vue";
import App from "@/App.vue";
//引入自定义指令
import auth from "@/directives/auth";const app = createApp(App);//使用自定义指令
app.directive("auth", auth);
//挂载,最后挂载
app.mount("#app");

 三、后端需要将查询到权限返回给前端,然后前端将其存入pinia中。

四、具体应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/540940.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java枚举与模拟方法

枚举 枚举的定义 枚举算法(穷举算法),这种算法就是在解决实际问题的时候去使用所有的方式去解决这个问题,会通过推理去考虑事件发生的每一种可能性,最后推导出结果 优点 简单粗暴,他暴力的枚举所有可能&…

【数据可视化】Echarts最常用图表

个人主页 : zxctscl 如有转载请先通知 文章目录 1. 前言2. 准备工作3. 柱状图3.1 绘制堆积柱状图3.2 绘制标准条形图3.3 绘制瀑布图 4. 折线图4.1 绘制堆积面积图和堆积折线图4.2 绘制阶梯图 5. 饼图5.1 绘制标准饼图5.2 绘制圆环图5.2 绘制嵌套饼图5.3 绘制南丁格尔…

对称加密算法(DES、AES)

加密密钥 解密密钥 DES现在基本不再使用 3DES处理速度慢 AES通常用于移动通信系统加密以及基于SSH协议的软件

Python解释器安装

下载Python解释器 如果您从未安装过Python解释器,那么在编写Python代码前需要安装该解释器。什么是Python解释器呢? “Python解释器”就像是一个能够理解和执行Python编程语言的“翻译官”。你写的Python代码(一系列指令)需要有一…

【SVG】前端-不依靠第三方包怎么画连线???

如何用SVG实现连线功能 在Web开发中,我们经常会遇到需要在页面上绘制图形或者实现一些图形交互的场景。SVG(Scalable Vector Graphics)作为一种用于描述二维图形的XML标记语言,在这方面提供了极大的便利。本文将以一个具体的例子…

HTML案例-1.标签练习

效果 源码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head&g…

金蝶云星空,怎么做BI数据可视化分析?

金蝶云星空是一个流程管理方面的软件&#xff0c;如果想要做BI数据可视化分析&#xff0c;还就需要一套BI方案&#xff0c;即一套奥威BI软件金蝶云星空BI方案。 奥威BI软件&#xff0c;负责提供平台和技术&#xff1b;金蝶云星空BI方案&#xff0c;则提供标准化的数据分析模型…

4款实用性前端动画特效分享(附在线演示)

分享4款非常不错的项目动画特效 其中有jQuery特效、canvas特效、CSS动画等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 全屏图片视差旋转切换特效 基于anime.js制作全屏响应式的图片元素布局&#xff0c;通过左…

【直流无刷笔记1】

入门科普完整版 优势&#xff1a;转速只取决于上桥臂的占空比 反馈测量方法 无刷测速 无刷测电流

TSN交换机有望成为下一代工业网络通信核心设备

TSN即Time-Sensitive Networking&#xff0c;中文名为时间敏感网络&#xff0c;是从传统以太网网络中衍生出来的一种技术&#xff0c;是指在非确定性以太网中实现确定性最小时间延时的协议族。TSN为标准以太网增加了确定性和可靠性&#xff0c;可实现对以太网网络功能的扩展&am…

多人聊天室 (epoll - Linux网络编程)

文章目录 零、效果展示一、服务器代码二、客户端代码三、知识点1.bind() 四、改进方向五、跟练视频 零、效果展示 一个服务器作为中转站&#xff0c;多个客户端之间可以相互通信。至少需要启动两个客户端。 三个客户端互相通信 一、服务器代码 chatServer.cpp #include <…

【Android】AOSP 架构

Android 官网对 AOSP 结构图进行了更新&#xff0c;如下所示&#xff1a; Android 应用&#xff08;Android Apps&#xff09; 完全使用 Android API 开发的应用。在某些情况下&#xff0c;设备制造商可能希望预安装 Android 应用以支持设备的核心功能。 特权应用&#xff08…