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中。

四、具体应用。

相关推荐

  1. vue3定义指令

    2024-03-18 23:42:02       64 阅读
  2. vue3定义指令

    2024-03-18 23:42:02       70 阅读
  3. VUE3 定义指令

    2024-03-18 23:42:02       42 阅读
  4. vue3定义指令

    2024-03-18 23:42:02       35 阅读
  5. Vue3定义全局指令

    2024-03-18 23:42:02       45 阅读
  6. 记录使用vue3定义指令

    2024-03-18 23:42:02       35 阅读
  7. Vue3 定义指令Custom Directives

    2024-03-18 23:42:02       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-18 23:42:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 23:42:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 23:42:02       82 阅读
  4. Python语言-面向对象

    2024-03-18 23:42:02       91 阅读

热门阅读

  1. C/S B/S

    2024-03-18 23:42:02       36 阅读
  2. MySQL的常用函数

    2024-03-18 23:42:02       36 阅读
  3. 计算机视觉+人工智能碰撞出新的火花

    2024-03-18 23:42:02       39 阅读
  4. 15、Linux-Shell04:分支和循环

    2024-03-18 23:42:02       47 阅读
  5. LightDB24.1 Sequence支持设置minvalue小于INT64_MIN

    2024-03-18 23:42:02       38 阅读
  6. HDOJ 2061

    2024-03-18 23:42:02       40 阅读
  7. 宠物智能喂食机方案设计

    2024-03-18 23:42:02       45 阅读
  8. ROS2纯跟踪实现(C++)

    2024-03-18 23:42:02       35 阅读
  9. 英语单词--痛苦

    2024-03-18 23:42:02       37 阅读