2023-04-09 10:28阅读: 23评论: 0推荐: 0

指令

  • directives/permission.js
import store from "@/store";

export default {
    // el 是指令绑定的元素,bindings是入参
    mounted(el, bindings) {
        let allowRoleList = bindings.value;
        let userRole = store.state.role;
        // 无权限,则不加载
        if (allowRoleList.indexOf(userRole) === -1) {
            el.parentNode && el.parentNode.removeChild(el);
        }
    }
}
  • directives/index.js
import permission from "./permission"
//批量注册指令(现在就一个permission)
const directives = {
    permission
}
//注册的一般写法,循环遍历directives,通过vue.directive注册
export default {
    install(Vue) {
        Object.keys(directives).forEach(key => {
            Vue.directive(key, directives[key])
        })
    }
}
  • main.js
import directives from './directives'

const app = createApp(App);
app.config.productionTip = false;
app.use(store).use(router).use(Antd).use(directives).mount('#app')
  • 使用
  <ul>
    <li v-permission="['admin','user']">btn1</li>
    <li v-permission="['admin']">btn2</li>
    <li v-permission="['user']">btn3</li>
    <li v-permission="[]">btn4</li>
  </ul>

本文作者:Sherwin

本文链接:https://www.cnblogs.com/sherwin1995/p/17299935.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Sherwin_szw  阅读(23)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.