项目权限(菜单/按钮)的设计思路及其实现

根据登陆账户的 userId,从接口获取菜单/按钮数据信息,然后菜单就根据数据渲染,而按钮权限就根据当前选中的菜单,获取到按钮权限数据,用指令的方式实现按钮的展示。现在具体说说指令的写法:

因为要掌控每个按钮的展示与否,所以每个按钮都要有一个唯一标识(至少同一菜单下的按钮的标识要唯一) ,同时还要有当前菜单所有的按钮数据。这就涉及到 动态参数 、 传值。

JS:
Vue.directive('auth', {
	bind: function (el, binding) {
		if (!binding.value) return false;
    	let btns = binding.value;
    	if (!_.isArray(btns)) return false;

    	let currentBtn = btns.filter(item => item.code === binding.arg);
    	if (currentBtn.length === 0) {
      		el.setAttribute('style', 'display:none;')
    	}
	}
})

HTML:
	<!-- v-auth:按钮唯一标识="按钮数据" -->
	<el-button type="primary" @click="onExportExcel" 
	v-auth:excel="currentMenu">
	导出Excel</el-button>

其他:
如果菜单数据是动态变化的。那么建议采用下面这种,加上 update 。

Vue.directive('auth', function (el, binding) {
  if (!binding.value) return false;
    let btns = binding.value;
    if (!_.isArray(btns)) return false;

    let currentBtn = btns.filter(item => item.code === binding.arg);
    if (currentBtn.length === 0) {
      el.setAttribute('style', 'display:none;')
    }
})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值