美文网首页
自定义指令

自定义指令

作者: key君 | 来源:发表于2019-10-18 15:10 被阅读0次

src创建directive/permission.js

import store from "@/store";
// <button v-permision="['admin','editor']"
const permission = {
  inserted(el, binding) {
    // 获取指令的值:按钮要求的角色数组
    const { value:pRoles } = binding;
    // 获取用户角色
    const roles = store.state.user.roles;

    if (pRoles && pRoles instanceof Array && pRoles.length > 0) {      
      // 判断用户角色中是否有按钮要求的角色
      const hasPermission = roles.some(role => {
        return pRoles.includes(role);
      });

      // 如果没有权限则删除当前dom
      if (!hasPermission) {
        el.parentNode && el.parentNode.removeChild(el);
      }
    } else {
      throw new Error(`需要指定按钮要求角色数组,如v-permission="['admin','editor']"`);
    }
  }
};

export default permission;

在main.js导入

import vp from './directive/permission'
Vue.directive('permission', vp);

在页面中使用

<template>
  <div class="about">
    <h1>This is an about page</h1>
    <button v-permission="['admin']">admin</button>
    <button v-permission="['admin','editor']">admin+editor</button>
  </div>
</template>

相关文章