详解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 相关文章推荐
js 效率组装字符串 StringBuffer
Dec 23 Javascript
浅析JavaScript中的隐式类型转换
Dec 05 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
Jan 17 Javascript
Js+Jq获取URL参数的集中方法示例代码
May 20 Javascript
jQuery实现滚动切换的tab选项卡效果代码
Aug 26 Javascript
BootStrap响应式导航条实例介绍
May 06 Javascript
jQuery实现每隔几条元素增加1条线的方法
Jun 27 Javascript
JavaScript中setTimeout的那些事儿
Nov 14 Javascript
JavaScript实现数组降维详解
Jan 05 Javascript
node.js实现微信JS-API封装接口的示例代码
Sep 06 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
Sep 27 jQuery
vuecli项目构建SSR服务端渲染的实现
Oct 30 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一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
简单的Python2.7编程初学经验总结
2015/04/01 Python
Python 处理数据的实例详解
2017/08/10 Python
Python实现调度算法代码详解
2017/12/01 Python
Python中创建二维数组
2018/10/17 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
python如何快速拼接字符串
2020/10/28 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
技术股东合作协议书
2014/12/02 职场文书
打架检讨书范文
2015/01/27 职场文书
JavaScript 对象创建的3种方法
2021/11/17 Javascript