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常用全局属性与方法记录积累
Jul 03 Javascript
Jquery跳到页面指定位置的方法
May 12 Javascript
文件上传,iframe跨域数据提交的实现
Nov 18 Javascript
详解微信小程序开发之城市选择器 城市切换
Jan 17 Javascript
JS中去掉array中重复元素的方法
May 26 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
Jun 04 Javascript
Vue resource中的GET与POST请求的实例代码
Jul 21 Javascript
jQuery接受后台传递的List的实例详解
Aug 02 jQuery
vue-cli webpack 引入jquery的方法
Jan 10 jQuery
node使用request请求的方法
Dec 20 Javascript
vue项目实现图片上传功能
Dec 23 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
Dec 10 Javascript
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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
用PHP生成自己的LOG文件
2006/10/09 PHP
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
用Python脚本来删除指定容量以上的文件的教程
2015/05/04 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
python多线程并发及测试框架案例
2019/10/15 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
python实现磁盘日志清理的示例
2020/11/05 Python
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
宠物店的创业计划书范文
2014/01/11 职场文书
竞聘上岗演讲
2014/05/19 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书
初中生物教学反思
2016/02/20 职场文书
在 Python 中利用 Pool 进行多线程
2022/04/24 Python
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers