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 触发HTML元素绑定的函数
Sep 11 Javascript
javascript中检测变量的类型的代码
Dec 28 Javascript
js对象与打印对象分析比较
Apr 23 Javascript
JS动态添加与删除select中的Option对象(示例代码)
Dec 25 Javascript
javascript限制用户只能输汉字中文的方法
Nov 20 Javascript
Angular 根据 service 的状态更新 directive
Apr 03 Javascript
Bootstrap select下拉联动(jQuery cxselect)
Jan 04 Javascript
express+mockjs实现模拟后台数据发送功能
Jan 07 Javascript
详解JQuery基础动画操作
Apr 12 jQuery
vue实现日历备忘录功能
Sep 24 Javascript
JS实现的雪花飘落特效示例
Dec 03 Javascript
js实现超级玛丽小游戏
Mar 18 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
PHP 编程请选择正确的文本编辑软件
2006/12/21 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
jQuery入门知识简介
2010/03/04 Javascript
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
[04:22]DOTA2上海特级锦标赛主赛事第四日TOP10
2016/03/06 DOTA
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现的基数排序算法原理与用法实例分析
2017/11/23 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
2018/02/03 Python
Django中redis的使用方法(包括安装、配置、启动)
2018/02/21 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
爱耳日活动总结
2014/04/30 职场文书
机关党员公开承诺书
2014/08/30 职场文书
个人债务授权委托书
2014/10/17 职场文书
运动会宣传语
2015/07/13 职场文书