详解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 相关文章推荐
基于jQuery的message插件实现右下角弹出消息框
Jan 11 Javascript
一次失败的jQuery优化尝试小结
Feb 06 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
Dec 12 Javascript
jQuery跨域问题解决方案
Aug 03 Javascript
JavaScript继承模式粗探
Jan 12 Javascript
深入理解React中es6创建组件this的方法
Aug 29 Javascript
js回溯法计算最佳旅行线路代码实例
Sep 11 Javascript
JavaScript和TypeScript中的void的具体使用
Sep 12 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
Oct 08 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
Jan 16 Javascript
vue中可编辑树状表格的实现代码
Oct 31 Javascript
在vue中嵌入外部网站的实现
Nov 13 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数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
Angular实现表单验证功能
2017/11/13 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
[02:44]DOTA2英雄基础教程 魅惑魔女
2014/01/07 DOTA
[07:57]2018DOTA2国际邀请赛寻真——PSG.LGD凤凰浴火
2018/08/12 DOTA
java直接调用python脚本的例子
2014/02/16 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
Python Pandas中根据列的值选取多行数据
2019/07/08 Python
Python SQLAlchemy入门教程(基本用法)
2019/11/11 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
2014社区三八妇女节活动方案
2014/03/30 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
荒岛余生观后感
2015/06/09 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python