记一次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如何判断某元素是否具备指定的样式
Nov 05 Javascript
Javascript实现飞动广告效果的方法
May 25 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
Nov 05 Javascript
浅谈window.onbeforeunload() 事件调用ajax
Jun 29 Javascript
ionic实现滑动的三种方式
Aug 27 Javascript
RequireJs的使用详解
Feb 19 Javascript
js单页hash路由原理与应用实战详解
Aug 14 Javascript
vue2.0 axios跨域并渲染的问题解决方法
Mar 08 Javascript
vue template中slot-scope/scope的使用方法
Sep 06 Javascript
零基础之Node.js搭建API服务器的详解
Mar 08 Javascript
vue路由中前进后退的一些事儿
May 18 Javascript
详解Vue 的异常处理机制
Nov 30 Vue.js
详解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 $_ENV为空的原因分析
2009/06/01 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
Javascript查询DBpedia小应用实例学习
2013/03/07 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
详解Jquery实现ready和bind事件
2016/04/14 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
2016/11/10 Javascript
深入理解vue中的$set
2017/06/01 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
Vue 自定义指令功能完整实例
2019/09/17 Javascript
深入理解javascript prototype的相关知识
2019/09/19 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
JS实现省市县三级下拉联动
2020/04/10 Javascript
python回调函数的使用方法
2014/01/23 Python
Python实现全局变量的两个解决方法
2014/07/03 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
python实现顺时针打印矩阵
2019/03/02 Python
python与mysql数据库交互的实现
2020/01/06 Python
JSF的标签库有哪些
2012/04/27 面试题
企业治理工作自我评价
2013/09/26 职场文书
党员违纪检讨书
2014/02/18 职场文书
公司新年寄语
2014/04/04 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
2014年公务员工作总结
2014/11/18 职场文书
施工安全协议书
2016/03/22 职场文书
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android
Python实现批量自动整理文件
2022/03/16 Python
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫