记一次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 相关文章推荐
JavaScript 三种不同位置代码的写法
Oct 25 Javascript
javascript 精粹笔记
May 09 Javascript
JQuery动态给table添加、删除行 改进版
Jan 19 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
Jan 09 Javascript
jQuery源码分析之jQuery中的循环技巧详解
Sep 06 Javascript
JS在可编辑的div中的光标位置插入内容的方法
Nov 20 Javascript
jQuery中nextUntil()方法用法实例
Jan 07 Javascript
JSON字符串转换JSONObject和JSONArray的方法
Jun 03 Javascript
详解Angular2学习笔记之Html属性绑定
Jan 03 Javascript
JS实现多物体运动的方法详解
Jan 23 Javascript
Vue基础配置讲解
Nov 29 Javascript
Element Carousel 走马灯的具体实现
Jul 26 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之第七天
2006/10/09 PHP
php变量范围介绍
2012/10/15 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
Vue中的v-cloak使用解读
2017/03/27 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
如何实现echarts markline标签名显示自己想要的
2020/07/20 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
[31:55]完美世界DOTA2联赛循环赛 IO vs GXR BO2第一场 11.04
2020/11/05 DOTA
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
Python中用Spark模块的使用教程
2015/04/13 Python
使用Python的PIL模块来进行图片对比
2016/02/18 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
python不同系统中打开方法
2020/06/23 Python
python制作微博图片爬取工具
2021/01/16 Python
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
几道数据库的面试题或笔试题
2014/05/31 面试题
教师自荐信
2013/12/10 职场文书
教你打造完美的创业计划书
2014/01/06 职场文书
简单的大学生自我鉴定
2014/02/18 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS