首页IT科技vue3 自定义指令控制按钮权限的操作代码

vue3 自定义指令控制按钮权限的操作代码

时间2025-06-14 10:04:24分类IT科技浏览5475
导读:经过1个周的摸索和查阅资料,终于搞定VUE3中自定义指令,实现按钮级别的权限控制。当然,只是简单的对按钮进行隐藏和删除的dom操作比较容易,一直纠结的是当按钮无权限时,不是直接删除当前dom元素(button按钮),这样用户体验不好,让人感觉没有这个功能。为了提高用户体验,当该按钮无权使用时,使用el-tooltip功能进行提醒。...

经过1个周的摸索和查阅资料             ,终于搞定VUE3中自定义指令                    ,实现按钮级别的权限控制              。当然        ,只是简单的对按钮进行隐藏和删除的dom操作比较容易          ,一直纠结的是当按钮无权限时                   ,不是直接删除当前dom元素(button按钮)            ,这样用户体验不好       ,让人感觉没有这个功能                     。为了提高用户体验                  ,当该按钮无权使用时               ,使用el-tooltip功能进行提醒      。以下是个人的做法    ,是否有弊端和不足                   ,或者各位高手有更优的方案                  ,欢迎指导和赐教!

1              、总体效果如下:

2                     、permissionlist组件中的按钮设置为:增加      、修改和删除三个按钮,为了让button按钮disabled时                ,可以让tooltip继续有效                     ,在button外层加了个span          。为了通过自定义指令中方便控制tooltip    ,vue3好像必须把自定义指令放在tooltip的外层             ,所以又在tooltip外层加了个span以放在自定义指令v-has                      。

3          、自定义指令组件(utils/haspermissions.js)

export const hasPermission = { install(Vue) { //自定义指令v-has: Vue.directive(has, { mounted(el, binding, vnode) { if (!checkPermission(binding.value)) { let tooltipNode = vnode.children.find((childrenCmpt) => childrenCmpt.component?.type.name == ElTooltip) tooltipNode.component.props.disabled = false el.querySelector("button").setAttribute("disabled", true) } }, }); //权限检查方法 function checkPermission(value) { let isExist = false; let userlogin = JSON.parse(sessionStorage.getItem("userlogin") || "[]"); let buttonArr = userlogin.haspermissions //判断是否按钮有权限 if (buttonArr.includes(value)) { isExist = true; } return isExist; } } }; export default hasPermission;

4                      、将自定义指令加入vue3的全局指令                    ,以方便所有组件中可以使用(在main.js中引入自定义指令组件然后use注册)         。

到此这篇关于vue3自定义指令控制按钮权限的文章就介绍到这了,更多相关vue3自定义指令内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

声明:本站所有文章        ,如无特殊说明或标注          ,均为本站原创发布      。任何个人或组织                   ,在未征得本站同意时            ,禁止复制         、盗用      、采集                      、发布本站内容到任何网站            、书籍等各类媒体平台                      。如若本站内容侵犯了原著者的合法权益       ,可联系我们进行处理            。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
python占位符号(python中pass占位符用法) vue多张图片合成一张(vue3中markRaw的使用)