详解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代码
Mar 06 Javascript
javascript去掉前后空格的实例
Nov 07 Javascript
实例讲解JS中数组Array的操作方法
May 09 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
Mar 21 Javascript
深入浅出理解javaScript原型链
May 09 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
Jul 05 Javascript
JavaScript从0开始构思表情插件
Jul 26 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
Nov 03 Javascript
Vue中在新窗口打开页面及Vue-router的使用
Jun 13 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
Mar 22 Javascript
如何在微信小程序里面退出小程序的方法
Apr 28 Javascript
js+canvas实现画板功能
Sep 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
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
PHP实现下载远程图片保存到本地的方法
2017/06/19 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
node.js require() 源码解读
2015/12/13 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
JavaScript实现三级联动菜单实例代码
2017/06/26 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
解决Layui数据表格的宽高问题
2019/09/28 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
python实现彩票系统
2020/06/28 Python
Python理解递归的方法总结
2019/01/28 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
python web框架中实现原生分页
2019/09/08 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
python中怎么表示空值
2020/06/19 Python
小学教师评语大全
2014/04/23 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
2014年自愿离婚协议书
2014/10/10 职场文书