Vue3如何自定义指令directive(如权限控制)
更新时间:2024年12月26日 14:48:51 作者:张小伟i
本文详细介绍了如何在Vue3项目中创建自定义指令directive1,首先,在src/directives/index.ts文件中引入自定义指令,然后,创建src/directives/permission.ts文件来定义具体指令逻辑,在main.ts文件中引入并注册该指令,最后,在页面中使用自定义指令
Vue3自定义指令directive
1.创建src/directives/index.ts文件
//@ts-nocheck import { Directive } from "vue"; import { permission } from "@/directives/permission.ts"; const allGlobalDirectives = { permission }; // console.log(allGlobalDirectives, "allGlobalDirectives"); //打印发现是导出的自定义指令名,permission export default { install(app) { Object.keys(allGlobalDirectives).forEach(key => { //Object.keys() 返回一个数组,值是所有可遍历属性的key名 app.directive(key, (allGlobalDirectives as { [key: string]: Directive })[key]); //key是自定义指令名字;后面应该是自定义指令的值,值类型是string }); } };
2.创建src/directives/permission.ts文件
import type { DirectiveBinding } from 'vue' export const permission = (el: HTMLElement, binding: DirectiveBinding) => { // value 获取用户使用自定义指令绑定的内容 const {value} = binding; // 获取用户所有的权限按钮 // const permissionBtn = sessionStorage.getItem("permission"); const permissionBtn = ["user.add23"]; // 判断用户使用自定义指令,是否使用正确了 if (value && value instanceof Array && value.length > 0) { const permissionFunc = value; //判断传递进来的按钮权限,用户是否拥有 //Array.some(), 数组中有一个结果是true返回true,剩下的元素不会再检测 const hasPermission = permissionBtn.some((role: any) => { return permissionFunc.includes(role); }); console.log("hasPermission", value, hasPermission); // 当用户没有这个按钮权限时,设置隐藏这个按钮 if (!hasPermission) { el.style.display = "none"; } } else { throw new Error("need roles! Like v-permission=\"['admin','editor']\""); } };
3.main.ts引入
// 引入自定义插件对象:注册全局组件 import globalDirectives from "@/directives/index.ts"; const app = createApp(App); // 安装自定义指令 app.use(globalDirectives); app.mount("#app");
4.页面中使用
<span v-permission="['user.add']" class="padding-right-20">测试</span>
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
本篇文章主要介绍了详解使用vue-router进行页面切换时滚动条位置与滚动监听事件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。2017-03-03Vue 动态组件components和v-once指令的实现
这篇文章主要介绍了Vue 动态组件components和v-once指令的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-08-08如何使用electron将vue项目打包成.exe文件(保姆级教程)
本文给大家介绍如何使用electron将vue项目打包成.exe文件,大家要注意一下vue2项目,使用的vue-element-admin框架,用electron打包成.exe文件,本文结合实例代码给大家介绍的非常详细,需要的朋友参考下吧2024-03-03解决vue项目使用font-awesome,build后路径的问题
今天小编就为大家分享一篇解决vue项目使用font-awesome,build后路径的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-09-09
最新评论