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 相关文章推荐
jQuery获取地址栏参数插件(模仿C#)
Oct 26 Javascript
我的Node.js学习之路(四)--单元测试
Jul 06 Javascript
javascript实现带节日和农历的日历特效
Feb 01 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
Jun 01 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
Jul 27 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
Oct 15 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
May 08 jQuery
js数字滑动时钟的简单实现(示例讲解)
Aug 14 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
Sep 14 Javascript
使用pkg打包Node.js应用的方法步骤
Oct 19 Javascript
uni-app实现点赞评论功能
Nov 25 Javascript
vue实现列表滚动的过渡动画
Jun 29 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编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
ecshop 订单确认中显示省市地址信息的方法
2010/03/15 PHP
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
php实现搜索类封装示例
2016/03/31 PHP
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
利用python代码写的12306订票代码
2015/12/20 Python
详解python发送各类邮件的主要方法
2016/12/22 Python
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
Python3离线安装Requests模块问题
2019/10/13 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
python实现测试工具(二)——简单的ui测试工具
2020/10/19 Python
Numpy数组的广播机制的实现
2020/11/03 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
台湾旅游网站:灿星旅游
2018/10/11 全球购物
电钳专业个人求职信
2014/01/04 职场文书
12岁生日感言
2014/01/21 职场文书
优秀纪检干部材料
2014/08/27 职场文书
二手房购房协议书范本
2014/10/05 职场文书
单位租房协议书范本
2014/12/04 职场文书
为自己工作观后感
2015/06/11 职场文书
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis
Python如何将list中的string转换为int
2022/07/15 Ruby