Vue 指令实现按钮级别权限管理功能


Posted in Javascript onApril 23, 2019

在项目中经常有需求要根据用户的权限对界面上的元素进行控制,这里介绍了一直简单的实现,仅供参考。

当前用户的权限列表储存在 store 里,也可以是其他地方。

指令

// src/directives/permission.js
import Vue from 'vue';
import store from '@/store';
import {get} from '@/utils';
// 是否有权限
const hasPermission = userPermission => {
  let userPermissionList = Array.isArray(userPermission) ? userPermission : [userPermission];
  // 当前用户的权限列表
  let permissionList = get(store, 'getters["user/permission"]', []);
  return userPermissionList.some(e => permissionList.includes(e));
};
// 指令
Vue.directive('per', {
  bind: (el, binding, vnode) => {
    if (!hasPermission(binding.value)) {
      el.parentNode.removeChild(el);
    }
  }
});
// 全局判断方法
Vue.prototype.$_has = hasPermission;

使用方法

在 mian.js 引入

<div v-per="[admin]">
  admin 可见
  是否为admin:{{$_has('admin')}}  //true
<div>

总结

以上所述是小编给大家介绍的Vue 指令实现按钮级别权限管理功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
javascript 装载iframe子页面,自适应高度
Mar 20 Javascript
Jquery 1.42 checkbox 全选和反选代码
Mar 27 Javascript
使用jQuery操作Cookies的实现代码
Oct 09 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
Dec 25 Javascript
简单的jquery左侧导航栏和页面选中效果
Aug 21 Javascript
JavaScript正则获取地址栏中参数的方法
Mar 02 Javascript
基于JavaScript实现无限加载瀑布流
Jul 21 Javascript
深入理解Vue.js源码之事件机制
Sep 27 Javascript
Vue项目中跨域问题解决方案
Jun 05 Javascript
ng-events类似ionic中Events的angular全局事件
Sep 05 Javascript
用Vue.js在浏览器中实现裁剪图像功能
Jun 18 Javascript
jQuery实现简易QQ聊天框
Feb 10 jQuery
Vue 之孙组件向爷组件通信的实现
Apr 23 #Javascript
Vue infinite update loop的问题解决
Apr 23 #Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
Apr 23 #Javascript
仿ElementUI实现一个Form表单的实现代码
Apr 23 #Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
Apr 23 #Javascript
vue项目首屏加载时间优化实战
Apr 23 #Javascript
灵活使用console让js调试更简单的方法步骤
Apr 23 #Javascript
You might like
在 PHP 中使用随机数的三个步骤
2006/10/09 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法
2015/07/01 PHP
php实现session共享的实例方法
2019/09/19 PHP
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
浅谈JS闭包中的循环绑定处理程序
2014/11/09 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
python itchat给指定联系人发消息的方法
2019/06/11 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
python获取整个网页源码的方法
2020/08/03 Python
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
村长反四风问题个人对照检查材料
2014/09/21 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
商务代表岗位职责
2015/02/15 职场文书
工作态度怎么写
2015/06/25 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
go结构体嵌套的切片数组操作
2021/04/28 Golang
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python