vue3自定义指令 方法 根据缓存等设置全局按钮显示隐藏

文章介绍了如何在Angular应用中使用自定义指令(has-accountCategory)来控制按钮显示,根据用户存储的accountCategory权限判断是否显示‘编辑’按钮。如果账户类别不是2,按钮将被隐藏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在mian.ts中
 

app.directive('has-accountCategory', {
    mounted(el, binding) {
//传值打印
  console.log(binding.value);
 //获取权限
        const accountCategory = JSON.parse(sessionStorage.getItem('userInfo')).accountCategory
//权限判断
        if (accountCategory != 2) {
            el.style.display = 'none'; // 如果没有权限,隐藏按钮  
        }
    },
//更新页面使用 没用到不知道啥意思
    // updated(el, binding) {  
    //     this.componentUpdated(el, binding); // 当权限变化时重新评估  
    //   }  
});

页面使用

 <el-button v-has-accountCategory link type="primary">
            编辑
          </el-button>
//或者直接传值判断
 <el-button v-has-accountCategory='1' link type="primary">
            编辑
          </el-button>

### Vue3 中实现按钮级别的权限控制 在 Vue 3 中,可以借助自定义指令来实现按钮级别的权限控制。这种方式不仅提高了代码的可维护性和重用性,还简化了页面上的权限逻辑处理。 #### 创建自定义权限指令 为了创建一个用于权限控制的自定义指令,在 `main.js` 或者单独的文件中注册全局指令: ```javascript import { createApp } from &#39;vue&#39; import App from &#39;./App.vue&#39; const app = createApp(App) app.directive(&#39;permission&#39;, { mounted(el, binding) { const { value } = binding; const permissions = JSON.parse(localStorage.getItem(&#39;permissions&#39;) || &#39;[]&#39;); if (!Array.isArray(value)) { throw new TypeError(`need an array! but got ${Object.prototype.toString.call(value).slice(8, -1)}`); } // 如果用户没有对应的操作权限,则隐藏该元素 if (value.some(role => !permissions.includes(role))) { el.parentNode && el.parentNode.removeChild(el); } }, }); ``` 此段代码展示了如何通过自定义指令的方式检查用户的权限列表,并据此决定是否显示特定的 DOM 元素[^1]。 #### 使用自定义指令 当完成上述配置之后,在模板中的任何地方都可以轻松应用这个新的 v-permission 指令来进行权限验证: ```html <template> <!-- 假设只有 admin 和 editor 可以看到编辑按钮 --> <el-button type="primary" v-permission="[&#39;admin&#39;,&#39;editor&#39;]">编辑</el-button> <!-- 同样适用于其他类型的 HTML 元素 --> <div v-permission="[&#39;viewer&#39;]"> 这里是一些只对 viewer 用户可见的内容 </div> </template> ``` 这里假设已经有一个有效的登录状态以及存储于本地缓存中的用户角色信息。每当渲染带有 `v-permission` 的节点时,都会触发相应的钩子函数去判断当前用户是否有足够的权限查看这些内容[^3]。 #### 动态加载权限数据 对于实际应用场景来说,通常会从服务器端获取最新的权限信息并保存到客户端(比如 localStorage)。因此可以在应用程序初始化阶段或者每次重新认证后更新这部分数据,从而确保界面始终反映最新授权情况[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值