详解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 的应用开发初探(mootools)
Dec 19 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
Jun 19 Javascript
JS子父窗口互相操作取值赋值的方法介绍
May 11 Javascript
jquery 操作iframe的几种方法总结
Dec 13 Javascript
js倒计时简单实现代码
Aug 11 Javascript
jq给页面添加覆盖层遮罩的实例
Feb 16 Javascript
JavaScript实现获取远程的html到当前页面中
Mar 26 Javascript
使用 vue-i18n 切换中英文效果
May 23 Javascript
详解Koa中更方便简单发送响应的方式
Jul 20 Javascript
js异步上传多张图片插件的使用方法
Oct 22 Javascript
深入理解vue-class-component源码阅读
Feb 18 Javascript
微信小程序获取当前时间及星期几的实例代码
Sep 20 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
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
PHP中的按位与和按位或操作示例
2014/01/27 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
2010/03/15 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
2014/03/03 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
node.js入门教程
2014/06/01 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
JavaScript中闭包之浅析解读(必看篇)
2016/08/25 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
Node接收电子邮件的实例代码
2017/07/21 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
Python环境搭建之OpenCV的步骤方法
2017/10/20 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
animation和transition的区别
2020/10/12 HTML / CSS
啤酒销售实习自我鉴定
2013/09/24 职场文书
大学生的网络创业计划书
2013/12/26 职场文书
18岁生日感言
2014/01/12 职场文书
高二学生评语大全
2014/04/25 职场文书
学校社会实践活动总结
2014/07/03 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
企业法人代表证明书
2015/06/18 职场文书
Python正则表达式中flags参数的实例详解
2022/04/01 Python
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技