vue 自定义指令控制按钮权限

本文介绍了在Vue.js项目中如何通过自定义指令来实现按钮权限的控制。根据用户登录获取的权限,页面上的按钮会展示不同的样式。通过创建自定义指令`btnRight`并在`main.js`中应用,可以判断按钮的权限状态,并据此添加或移除特定CSS类,以控制按钮的样式、显示和交互行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求描述

  • 用户登录获取菜单、按钮、接口权限
  • 页面上的按钮根据用户权限展示不同的样式(颜色、显示隐藏等)

实例解析

创建自定义指令

  • directive / btn-right / btnRight.js
// 自定义指令函数
export default {
	inserted(el, domVal, node) {
		console.log('el', el);
		console.log('domVal', domVal);
		console.log('node', node);
		// 按钮鉴定权限--在用户登录时获取,可以通过 store、storage 等方法存储,这里取值
		let systemPower = [
			'add', 'del', 'edit'
		];
		let flag = 0;
		let reg = domVal.expression.split("'").join(""); // 清除传值前后的引号
		systemPower.map((item0, index0) => {
			if (reg == item0) {
				// 当前标签传入内容在权限列表中
				flag += 1
			}
		});
		if (flag == 0) {
			// 当前按钮没有权限
			el.classList.add("noBtnRight")
		} else {
			// 当前按钮有权限
			el.classList.remove("noBtnRight")
		}
	}
}
  • directive / btn-right / index.js
// 暴露到全局
import btnRight from './btnRight'
const install = Vue => {
  Vue.directive('btnRight', btnRight)
}
if (window.Vue) {
  window['btnRight'] = btnRight
  Vue.use(install);
}

btnRight.install = install
export default btnRight
  • main.js
import btnRight from './directive/btn-right'; 
Vue.use(btnRight); 

应用到标签

<div
  class="linkJump"
  v-btnRight="'add'"
  @click="goToActDetail($event, scope.row)"
>
  普通活动
</div>

在这里插入图片描述

  • 上图为 btnRight.js 的打印结果,可看出能够获取到标签 div、自定义指令的传值 ‘add’、标签节点
  • 在 btnRight.js 中判断出,当前标签传递的 ‘add’ 在权限列表中,所以视为有权限,不添加 ‘noBtnRight’ 类名
    在这里插入图片描述
  • 如果修改自定义标签传值为 ‘click’,去权限列表中查找,没有权限,则会添加上特殊类名 ‘noRight’
    在这里插入图片描述
    在这里插入图片描述
  • 使用特殊类名就可以对无权限的元素进行操作,例如添加颜色、隐藏、禁止点击等
goToActDetail(e, item) {
  if (e.target.classList.contains("noBtnRight")) {
  // 没有权限
  } else {
  // 有权限
  }
},
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值