详解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 相关文章推荐
JavaScipt基本教程之前言
Jan 16 Javascript
js 获取服务器控件值的代码
Mar 05 Javascript
用javascript作一个通用向导说明
Aug 30 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
Nov 15 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
Aug 27 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
Feb 27 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
Dec 04 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
Jan 19 Javascript
小程序云开发实战小结
Oct 25 Javascript
vue实现滑动超出指定距离回顶部功能
Jul 31 Javascript
vue仿ios列表左划删除
Sep 26 Javascript
使用webpack和rollup打包组件库的方法
Feb 25 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
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
2015/08/06 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
js 监控iframe URL的变化实例代码
2017/07/12 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
小程序自动化测试的示例代码
2020/08/11 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
Python标准异常和异常处理详解
2015/02/02 Python
Python中用format函数格式化字符串的用法
2015/04/08 Python
python中__call__内置函数用法实例
2015/06/04 Python
Python编程实现的图片识别功能示例
2017/08/03 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
Python3.5常见内置方法参数用法实例详解
2019/04/29 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
Python连接字符串过程详解
2020/01/06 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
2020/02/11 Python
大三自我鉴定范文
2013/10/05 职场文书
学校食堂采购员岗位职责
2013/12/05 职场文书
乔迁之喜主持词
2014/03/27 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
战友聚会策划方案
2014/06/13 职场文书
个人主要事迹材料
2014/08/26 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
贷款收入证明格式
2015/06/24 职场文书
golang的文件创建及读写操作
2022/04/14 Golang
python多次执行绘制条形图
2022/04/20 Python