详解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 未结束的字符串常量常见解决方法
Jan 24 Javascript
jQuery EasyUI API 中文文档 - Panel面板
Sep 30 Javascript
jquery的ajax异步请求接收返回json数据实例
Jun 16 Javascript
浅谈JavaScript 框架分类
Nov 10 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
Jun 14 Javascript
关于javascript获取内联样式与嵌入式样式的实例
Jun 01 Javascript
关于Vue Webpack2单元测试示例详解
Aug 14 Javascript
详解微信小程序中的页面代码中的模板的封装
Oct 12 Javascript
react 创建单例组件的方法
Apr 26 Javascript
jsonp跨域及实现百度首页联想功能的方法
Aug 30 Javascript
vue实现路由切换改变title功能
May 28 Javascript
ES6 Promise对象的应用实例分析
Jun 27 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文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
PHP速成大法
2015/01/30 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
javascript中简单的进制转换代码实例
2013/10/26 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
bootstrap 通过加减按钮实现输入框组功能
2017/11/15 Javascript
vue如何判断dom的class
2018/04/26 Javascript
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
Django中url的反向查询的方法
2018/03/14 Python
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
Python操作Elasticsearch处理timeout超时
2020/07/17 Python
python中添加模块导入路径的方法
2021/02/03 Python
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
英国电信商店:BT Shop
2019/12/17 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
运动会通讯稿500字
2014/02/20 职场文书
企业元宵节主持词
2014/03/25 职场文书
热爱祖国的演讲稿
2014/05/04 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
三严三实民主生活会发言稿
2014/10/13 职场文书
民事辩护词范文
2015/05/21 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
Python 视频画质增强
2022/04/28 Python