vue自定义指令(按钮权限)

// /directive/index.js
import permission from './permission';
// import colorfrom './color'

export default function (app) {
  app.directive('guohuayu', permission);
  // app.directive('color', color);
}

// main.js
import guohuayu from './directive/index';
const app = createApp(App);
guohuayu(app);

// /directive/permission.js
const checkPermission = (el, binding) => {
  // 获取自定义指令传过来的数组(binding.value)
  const btnRoles = binding.value;

  // sessionStorage.setItem(
  //   'huayu_btns',
  //   JSON.stringify(['401XZMB', '401SCXS', '401TJ']),
  // );

  const userRoles = JSON.parse(sessionStorage.getItem('huayu_btns'));
  // console.log('呵呵呵呵', el, binding.value, userRoles);

  if (btnRoles && btnRoles instanceof Array) {
    if (btnRoles.length) {
      const hasPermission = userRoles.some((v) => {
        return btnRoles.includes(v);
      });
      // console.log('是走这里啊啊啊', hasPermission);

      if (!hasPermission) {
        el.parentNode && el.parentNode.removeChild(el);
      }
    } else {
      throw new Error(
        `传入关于权限的数组,如 v-permission="['super','normal']"`,
      );
    }
  }
};


export default {
  mounted(el, binding) {
    checkPermission(el, binding);
  },
  updated(el, binding) {
    checkPermission(el, binding);
  },
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值