记一次Vue.js混入mixin的使用(分权限管理页面)


Posted in Javascript onApril 17, 2019

需求背景:在一个后台的管理系统中,不同的用户角色对应不同的用户权限。现要求,同一个页面对有操作权限的用户来说是可操作的,对无操作权限的用户来说是只读的,即操作按钮均失效。系统用Vue.js开发。

一、mixin的概念

官方文档这么说:混入是一种分发Vue组件中可服用功能的非常灵活的方式。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。

我自己的理解:混入对象具有Vue组件可以声明的所有选项,如[components]、[computed]、[methods]等;当组件使用混入对象时,该组件也同时拥有了混入对象的选项。

二、思路

按照开篇写的需求描述,如果用一般的方法,我们通常会在每个页面的vue文件中,判断当前用户是否具有操作该页面的权限,根据判断结果来展示页面。然而,这种方法会导致大量代码的重复,徒然增加了一些无意义的工作量。因此,需要有一个可以复用的方法。

故此,我们可以把上述的可复用的办法放在混入对象的选项当中。

三、代码展示

在混入对象的computed选项中,我们有这几个方法,来判断用户所拥有的的‘编辑'、‘查看'、‘删除'等权限。

computed: {
  allowedToCreate() {
   return this.hasOperatePermissions('createRole');
  },
  allowedToEdit() {
   return this.hasOperatePermissions('editRole');
  },
  allowedToCheckIn() {
   return this.hasOperatePermissions('checkInRole');
  },
  allowedToDelete() {
   return this.hasOperatePermissions('deleteRole');
  },  
 },

注意,如果普通组件中引用了混入对象,那么这些计算属性会自动成为组件的计算属性。具体如何创建一个混入对象,并且引入该混入对象,这里不细讲,可参考官方文档。

记一次Vue.js混入mixin的使用(分权限管理页面)

记一次Vue.js混入mixin的使用(分权限管理页面)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
URL编码转换,escape() encodeURI() encodeURIComponent()
Dec 27 Javascript
js 日期转换成中文格式的函数
Jul 07 Javascript
jquery tools系列 expose 学习
Sep 06 Javascript
js中判断文本框是否为空的两种方法
Jul 31 Javascript
jquery获取当前点击对象的value方法
Feb 28 Javascript
浅谈js构造函数的方法与原型prototype
Jul 04 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
Aug 24 Javascript
使用react实现手机号的数据同步显示功能的示例代码
Apr 03 Javascript
vue实现键盘输入支付密码功能
Aug 18 Javascript
从0到1搭建element后台框架优化篇(打包优化)
May 12 Javascript
vue vant Area组件使用详解
Dec 09 Javascript
手把手教您实现react异步加载高阶组件
Apr 07 Javascript
详解js获取video任意时间的画面截图
Apr 17 #Javascript
解决vue跨域axios异步通信问题
Apr 17 #Javascript
自定义Vue中的v-module双向绑定的实现
Apr 17 #Javascript
微信公众平台 发送模板消息(Java接口开发)
Apr 17 #Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
Apr 17 #Javascript
vue获取时间戳转换为日期格式代码实例
Apr 17 #Javascript
微信小程序bindinput与bindsubmit的区别实例分析
Apr 17 #Javascript
You might like
php中数组首字符过滤功能代码
2012/07/31 PHP
PHP中文乱码解决方案
2015/03/05 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
javascript下过滤数组重复值的代码
2007/09/10 Javascript
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
Angular5中调用第三方js插件的方法
2018/02/26 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
JS大坑之19位数的Number型精度丢失问题详解
2019/04/22 Javascript
js实现右键弹出自定义菜单
2020/09/08 Javascript
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
2018/01/31 Python
Sanic框架配置操作分析
2018/07/17 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
一套Delphi的笔试题一
2016/02/14 面试题
淘宝店铺营销方案
2014/02/13 职场文书
职称评定自我鉴定
2014/03/18 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
企业标语大全
2014/07/01 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
防震减灾主题班会
2015/08/14 职场文书
Python关于OS文件目录处理的实例分享
2021/05/23 Python