v-permission自定义权限指令

vue3后台项目中,有的时候角色并不拥有显示某一个组件的权限,需要用到自定义权限指令v-permission


利用install(app,options)函数来开发自定义指令 这个函数有两个参数,一个为vue构造原型,一个为可传入的配置项

install(app){
	app.directive("permission",{
		mounted(el,binding){
			//判断是否拥有权限,且判断传入的数据类型是否符合预期
			hasPermission(el,binding.value)
			//binding里面的value为使用指令传入的数据如  v-permission="['getStatistics1,GET']"
		}
	})
}

function hasPermission(value,el=false){
	//判断传入的数据是否符合自己设定的预期
	if(!Array.isArray(value)){
		//如果传入的不是数组则抛出错误
		throw new Error(`需要传入正确的数据类型`)
	}
	//判断是否拥有权限
	let data = store.state.ruleNames  //存储着是否拥有该请求权限的数组
	//如果在data中包含了传入的数据字段,则代表拥有权限,没有则返回 -1  此时如果为false 则代表没有权限
	let hasAuth = value.findIndex(v=>data.includes(v))!=-1
	//当使用的自定义指令dom存在时,且没有权限
	if(el && !hasAuth){
		//移除组件
		el.parentNode.removeChild(el)
	}
}
暴露出去在main.js中use
export default {
    install(app){
        // app 为根组件实例
        app.directive('permission',{
            mounted(el,binding) {
                hasPermission(binding.value,el)
            },
        })
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值