CBoard框架使用总结二--扩展新的功能模块
2017-07-25 20:18
531 查看
文章内容
1.添加新的菜单项2.完成后台处理逻辑
3.整体流程
1.添加新的菜单项
1.1.提供菜单数据
基础的CBoard框架菜单项需要在代码里面(Service层)配置,由于是以list形式存储,有必要的时候也能够通过数据库实现;/*org.cboard.services.MenuService */ public class MenuService { private static List<DashboardMenu> menuList = new ArrayList<>(); static { menuList.add(new DashboardMenu(1, -1, "SIDEBAR.CONFIG", "config")); menuList.add(new DashboardMenu(11, -1, "SIDEBAR.EXTEND", "extend")); menuList.add(new DashboardMenu(12, 11, "SIDEBAR.EXTEND_FUNCTION_1", "extend.function_1")); } public List<DashboardMenu> getMenuList() { return menuList; } }
配置参数:
menuList.add(new DashboardMenu(long menuId, long parentId, String menuName, String menuCode));
参数 | 含义 | 备注 |
---|---|---|
menuId | 菜单ID | |
parentId | 父菜单项ID | |
menuName | 菜单名称 | 对应语言配置文件的标识串 |
menuCode | 菜单编码 | 唯一标识串 |
1.2.返回菜单数据
通过公用的Controller返回数据,有前端代码调用获取数据;@RequestMapping(value = "/getMenuList") public List<DashboardMenu> getMenuList() { return menuService.getMenuList(); }
1.3.前端处理数据,并展示在界面上
在AngularJS的Controller层,我们发现cBoardCtrl控制器,用于获取菜单列表;var getMenuList = function () { $http.get("commons/getMenuList.do").success(function (response) { $scope.menuList = response; }); };
特别的,CBoard并不是直接将菜单项显示在界面上,而是在模板中配置所有菜单项,通过isShowMenu(menuCode)判断是否显示此菜单项;
/*isShowMenu方法*/ $scope.isShowMenu = function (code) { return !_.isUndefined(_.find($scope.menuList, function (menu) { return menu.menuCode == code })); };
<!--src/main/webapp/starter/main-sidebar.html--> <!-- Extends --> <li class="treeview" ui-sref-active="active" ng-if="isShowMenu('extend')"> <a> <i class="fa fa-cog"></i> <span>{{'SIDEBAR.EXTEND'|translate}}</span> <span class="pull-right-container"> <i class="fa fa-angle-left pull-right"></i> </span> </a> <ul class="treeview-menu"> <li ui-sref-active="active" ng-if="isShowMenu('extend.function_1')"> <a ui-sref="extend.function_1"><i class="fa fa-fw fa-user"></i>{{'SIDEBAR.EXTEND_FUNCTION_1'|translate}}</a> </li> </ul> </li>
1.4.配置菜单项功能
菜单的功能配置在AngularJS的config中完成,涉及到具体的请求地址,模板路径,Controller(前端),被当作常量存储在config中;<!--src/main/webapp/org/cboard/ng-config.js--> angular.module('cBoard').config(['$stateProvider', function ($stateProvider) { $stateProvider //...... .state('extend', { url: '/extend', abstract: true, template: '<div ui-view></div>' }) .state('extend.function_1', { url: '/extend', templateUrl: 'org/cboard/view/extend/function_1.html', controller: 'extendFunction' }); }]);
当点击具体的菜单项时会请求响应的Controller并加载对应的模板,最后完成界面的渲染;
1.5.配置语言字符串
CBoard的语言配置通过AngularJS的国际化服务来完成(Angular-translate),如图为菜单项的语言字符串:/*src/main/webapp/i18n/cn/cboard.json*/ "SIDEBAR": { "C_DASHBOARD": "看板", "MY_DASHBOARD": "我的看板", "CONFIG": "配置", "DATA_SOURCE": "数据源管理", "CUBE": "数据集管理", "WIDGET": "图表设计", "DASHBOARD": "看板设计", "DASHBOARD_CATEGORY": "看板分类", "ADMIN": "管理", "USER_ADMIN": "用户管理", "RES_ADMIN": "资源管理", "JOB": "定时任务", "SHARE_RESOURCE": "资源分享", "EXTEND": "扩展功能", "EXTEND_FUNCTION_1":"测试功能一" },
相关文章推荐
- CBoard框架使用总结五--扩展菜单配置功能
- CBoard框架使用总结一
- 使用StructureMap扩展ASP.NET MVC三层结构框架系列文章总结篇(附源码下载)
- 1.C#开发winform 开发调运检疫离线制证功能。调用cLodop打印控件(NVelocity模块,生成HTML(包含cLodop打印控件的js),使用WebBrowser,展现网页)总结
- CBoard框架使用总结三--AdminLTE可扩展性分析
- CBoard框架使用总结七--添加首页图表
- 集合框架_集合的特点和数据结构、如何选择使用哪种集合呢、各种集合常见功能和遍历方式总结
- 在Yii框架中使用PHPExcel扩展从数据库导出excel文件功能的实现
- 使用StructureMap扩展ASP.NET MVC三层结构框架系列文章总结篇(附源码下载)
- 权限模块设计 - shiro框架的使用及扩展
- 微信小程序 安全包括(框架、功能模块、账户使用)详解
- CBoard框架使用总结五--角色权限控制
- mongodb 在yii2 框架中的使用(本人在框架中做了功能扩展,非非官方下载的yii2的操作)
- yii框架中使用php(xampp)的mongodb扩展和应用总结
- 使用AppFuse框架进行开发的总结
- 使用扩展方法和接口给对象添加“重置状态”功能
- 大社区型网站的架构总结之如何标示用户在使用哪个功能程序篇(草稿)
- 基于ARCGIS的VCT扩展模块使用
- 使用框架集实现页面导航功能
- IBM 的 Java 诊断,第 4 部分: 使用分析模块扩展 IBM Dump Analyzer for Java