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

一、获取所有按钮的权限

1. 将按钮权限数据存放在数据里resourcesData 

2.存入sessionStorage.setItem('resourcesData', this.resourcesList);

二、封装

创建directive文件夹创建index.js 和permissions.js

1.permissions.js

检测是否有权限

使用Vue.directive声明自定义指令permiss

export default {

   inserted(el,binding){

    let buttonKey = binding.value;

    // 代表某个元素需要通过权限验证

    if(buttonKey){

        let key = checkKey(buttonKey)

        if(!key){//没有权限

            el.remove()  //删除按钮

        }

    }else{

        throw new Error('缺少唯一指令')

    }

},

}

先定义检测函数

function checkKey(key) {

  // 获取权限数组

  let permissionData = sessionStorage.getItem("resourcesData") ? sessionStorage.getItem("resourcesData") : [] ;

  //如果传入的元素key不在权限数组里,则不可显示

  let index = permissionData.indexOf(key)

  if(index > -1) {

      return true;

  }else{

      return false;

  }

}

2.index.js 自定义指令全局注册入口文件

import Vue from "vue";

import buttonPermissions from "./permissions"

// 注册全局指令

Vue.directive("permiss", buttonPermissions);

三:使用方式:

1.全局挂载main.js  

注册全局 directive 指令 import "./directive/index";

2.页面应用

 <el-button type="text" v-permiss="'project-query:del'>

              >

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容