记一次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 相关文章推荐
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
Aug 13 Javascript
jquery入门—数据删除与隔行变色以及图片预览
Jan 07 Javascript
省市联动效果的简单实现代码(推荐)
Jun 06 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
Jul 22 Javascript
javascript 秒表计时器实现代码
Mar 09 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
Apr 04 jQuery
Angular2搜索和重置按钮过场动画
May 24 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
Feb 24 jQuery
详解node Async/Await 更好的异步编程解决方案
May 10 Javascript
微信小程序实现弹出菜单功能
Jun 12 Javascript
vue eslint简要配置教程详解
Jul 26 Javascript
python实现迭代法求方程组的根过程解析
Nov 25 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在各种web服务器的运行模式详解
2013/06/03 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
2016/11/05 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
JavaScript表单验证实现代码
2017/05/22 Javascript
Angular2 组件间通过@Input @Output通讯示例
2017/08/24 Javascript
在项目vue中使用echarts的操作步骤
2020/09/07 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
python实现自动重启本程序的方法
2015/07/09 Python
全面解析Python的While循环语句的使用方法
2015/10/13 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
Python编程之序列操作实例详解
2017/07/22 Python
Python 查看文件的读写权限方法
2018/01/23 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
python 一维二维插值实例
2020/04/22 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
英国女装网上商店:I Saw It First
2018/10/18 全球购物
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
UNIX文件类型
2013/08/29 面试题
2014年反洗钱工作总结
2014/11/22 职场文书
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript