详解vue + vuex + directives实现权限按钮的思路


Posted in Javascript onOctober 24, 2017

遇到了一个业务场景:

某个按钮按下去之前需要先判断它是否登陆,如果没有登陆需要跳转到对应的登陆页面,否则就继续该按钮之后的操作。

对于这种问题,很显然不能每个按钮都去判断,所以我思考了一下结合自定义指令和vuex完成了相应的实现。

主要的代码实现

const directive = Vue.directive('permission-click', {
 bind: (el, binding, vnode) => {
  el.addEventListener('click', (e) => {
   if (!store.getters.isLogin) {
    store.dispatch('showLogin')
   } else {
    typeof binding.value === 'function' && binding.value()
   }
  })
 }
})

这里封装了一个自定义指令,添加了一个点击事件,对于已经登陆的则调用传进来的函数,否则通过vuex去控制登陆(此处的登陆是通过弹窗实现的)

自定义组件使用的时候也极为简单

<div class="" v-permission-click="doSomething">
 ...
</div>

vuex里面的showLogin这个action无非就是对login的显示隐藏flag的操作。

这里只是完成了简单的登陆权限控制,从登陆权限出发,可以加入更多的权限控制,比如根据role角色判断,然后可以全局地控制权限,且实现起来极为精简。

Github: github.com/lyh2668

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 继承详解(一)
Jul 13 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
Jul 05 Javascript
ParseInt函数参数设置介绍
Jan 02 Javascript
node.js中的path.resolve方法使用说明
Dec 08 Javascript
JavaScript调用客户端Java程序的方法
Jul 27 Javascript
关于JS中prototype的理解
Sep 07 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
Jul 28 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
Nov 01 Javascript
解析预加载显示图片艺术
Dec 05 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
Sep 07 Javascript
vue实现一拉到底的滑动验证
Jul 25 Javascript
详解TS数字分隔符和更严格的类属性检查
May 06 Javascript
React Native实现地址挑选器功能
Oct 24 #Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
Oct 24 #Javascript
React Native 通告消息竖向轮播组件的封装
Aug 25 #Javascript
Vue v2.5 调整和更新不完全问题
Oct 24 #Javascript
Vue.js 2.5新特性介绍(推荐)
Oct 24 #Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
Oct 24 #Javascript
浅谈在vue项目中如何定义全局变量和全局函数
Oct 24 #Javascript
You might like
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
php die()与exit()的区别实例详解
2016/12/03 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
JS实现移动端双指缩放和旋转方法
2019/12/13 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
Python实现通过文件路径获取文件hash值的方法
2017/04/29 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
使用OpenCV实现道路车辆计数的使用方法
2020/07/15 Python
Python logging模块进行封装实现原理解析
2020/08/07 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
运动会800米加油稿
2014/02/22 职场文书
三十年同学聚会感言
2015/07/30 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫
小程序自定义轮播图圆点组件
2022/06/25 Javascript