概述
参照网上资料写的一个,算是解决一个小面试题。但有个问题页面加载完成一瞬间会闪一下再删除元素,这个问题我目前能想到的法子就是:
1.给页面加一层加载之类的东西,优化用户体验
2.给加了权限的按钮之类的默认样式隐藏,等鉴权完毕再考虑是否展示
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.hidden {
display: none;
}
</style>
</head>
<body>
<div id="app">
<input class="hidden" type="text" v-auth="['Button:editText', 'Button:addText', 'Button:deleteText']" value="总控">
<input class="hidden" type="text" v-auth="'Button:addText'" value="添加">
<input class="hidden" type="text" v-auth="'Button:deleteText'" value="删除">
<input class="hidden" type="text" v-auth="'Button:checkText'" value="查看">
</div>
<script src="./vue2.7.js"></script>
<script>
const authorization = ['Button:editText', 'Button:addText', 'Button:deleteText']
// 外层函数传入能验证的数组,内层函数传入你当前要验证的值(字符串或字符串数组)
const useAuthorization = authorization => {
return value => {
if (Array.isArray(value)) {
return value.every(item => authorization.includes(item))
} else if (typeof value === "string") {
return authorization.includes(value)
} else {
throw new TypeError("参数类型错误")
}
}
}
const auth = useAuthorization(authorization)
const vm = new Vue({
el: "#app",
methods: {},
directives: {
auth: {
inserted: (el, binding) => {
const {value} = binding
const hasPermission = auth(value)
if (!hasPermission) {
el.parentNode.removeChild(el)
} else {
el.classList.remove("hidden")
}
}
}
}
})
</script>
</body>
</html>
最后
以上就是专注小兔子为你收集整理的vue自定义指令实现按钮权限鉴定的全部内容,希望文章能够帮你解决vue自定义指令实现按钮权限鉴定所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复