记一次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 相关文章推荐
Mootools 1.2教程 排序类和方法简介
Sep 15 Javascript
Javascript实现动态菜单添加的实例代码
Jul 05 Javascript
javascript+canvas制作九宫格小程序
Dec 28 Javascript
详解AngularJS过滤器的使用
Mar 11 Javascript
js简单时间比较的方法
Aug 02 Javascript
纯jQuery实现前端分页功能
Mar 23 jQuery
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
Aug 28 Javascript
详解Ubuntu安装angular-cli遇到的坑
Sep 08 Javascript
jQuery 点击获取验证码按钮及倒计时功能
Sep 20 jQuery
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
Sep 25 Javascript
ES6 迭代器与可迭代对象的实现
Feb 11 Javascript
JavaScript交换两个变量方法实例
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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
修改php.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
php新建文件的方法实例
2019/09/26 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
原生js实现3D轮播图
2020/03/21 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
[02:54]DOTA2英雄基础教程 暗影牧师戴泽
2013/12/05 DOTA
python 正则表达式 概述及常用字符
2009/05/04 Python
Python学习笔记之常用函数及说明
2014/05/23 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
python实现简单爬虫功能的示例
2016/10/24 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
python中uuid模块实例浅析
2020/12/29 Python
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
电子商务专业个人的自我评价分享
2013/10/29 职场文书
实习生个人的自我评价
2013/12/08 职场文书
大学生的自我鉴定范文
2014/01/21 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
关于祖国的演讲稿
2014/05/04 职场文书
活动总结书
2014/05/08 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
大学生党性分析材料
2014/12/19 职场文书
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL