指令
- 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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步