跟我一起学extjs5(09--自己定义菜单2)


        这一节来定义另外三种类型的菜单类。

首先定义菜单button类。文件放于app/view/main/region文件夹以下,文件名称为ButtonMainMenu.js。

  1. /**
  2. * 显示在顶部的按钮菜单。能够切换至标准菜单,菜单树
  3. */
  4. Ext.define('app.view.main.region.ButtonMainMenu', {
  5.  
  6. extend : 'app.ux.ButtonTransparent',
  7.  
  8. alias : 'widget.buttonmainmenu',
  9.  
  10. viewModel : 'main',
  11.  
  12. text : '菜单',
  13. glyph : 0xf0c9,
  14.  
  15. initComponent : function() {
  16.  
  17. this.menu = this.getViewModel().getMenus();
  18.  
  19. this.callParent();
  20. }
  21.  
  22. })

另外一种树状菜单,文件名称为MainMenuTree.js。

  1. /**
  2. * 树状菜单。显示在主界面的左边
  3. */
  4. Ext.define('app.view.main.region.MainMenuTree', {
  5. extend : 'Ext.tree.Panel',
  6. alias : 'widget.mainmenutree',
  7. title : '系统菜单',
  8. glyph : 0xf0c9,
  9. rootVisible : false,
  10. lines : true,
  11. viewModel : 'main',
  12.  
  13. initComponent : function() {
  14. this.store = Ext.create('Ext.data.TreeStore', {
  15. root : {
  16. text : '系统菜单',
  17. leaf : false,
  18. expanded : true
  19. }
  20. });
  21. var menus = this.getViewModel().get('systemMenu');
  22. var root = this.store.getRootNode();
  23. for (var i in menus) {
  24. var menugroup = menus[i];
  25. var menuitem = root.appendChild({
  26. text : menugroup.text,
  27. expanded : menugroup.expanded,
  28. icon : menugroup.icon,
  29. glyph : menugroup.glhpy
  30. });
  31. for (var j in menugroup.items) {
  32. var menumodule = menugroup.items[j];
  33. var childnode = {
  34. moduleId : menumodule.text,
  35. moduleName : menumodule.module,
  36. text : menumodule.text,
  37. leaf : true
  38. };
  39. menuitem.appendChild(childnode);
  40. }
  41. }
  42. this.callParent(arguments);
  43. }
  44. })

第三种为折叠式菜单。文件名称为AccordionMainMenu.js。


  1. /**
  2. * 折叠式(accordion)菜单,样式能够自己用css进行美化
  3. */
  4.  
  5. Ext.define('app.view.main.region.AccordionMainMenu', {
  6. extend : 'Ext.panel.Panel',
  7. alias : 'widget.mainmenuaccordion',
  8. title : '系统菜单',
  9. glyph : 0xf0c9,
  10.  
  11. layout : {
  12. type : 'accordion',
  13. animate : true
  14. },
  15.  
  16. viewModel : 'main',
  17.  
  18. initComponent : function() {
  19. this.items = [];
  20. var menus = this.getViewModel().get('systemMenu');
  21. for (var i in menus) {
  22. var menugroup = menus[i];
  23. var accpanel = {
  24. menuAccordion : true,
  25. xtype : 'panel',
  26. title : menugroup.text,
  27. bodyStyle : {
  28. padding : '10px'
  29. },
  30. layout : 'fit',
  31. dockedItems : [{
  32. dock : 'left',
  33. xtype : 'toolbar',
  34. items : []
  35. }],
  36. glyph : menugroup.glyph
  37. };
  38. for (var j in menugroup.items) {
  39. var menumodule = menugroup.items[j];
  40. accpanel.dockedItems[0].items.push({
  41. xtype : 'buttontransparent',
  42. text : this.addSpace(menumodule.text, 12),
  43. glyph : menumodule.glyph,
  44. handler : 'onMainMenuClick'
  45. });
  46. }
  47. this.items.push(accpanel);
  48. }
  49. this.callParent(arguments);
  50. },
  51.  
  52. addSpace : function(text, len) {
  53. console.log(text.length);
  54. var result = text;
  55. for (var i = text.length; i < len; i++) {
  56. result += ' ';
  57. }
  58. return result;
  59. }
  60.  
  61. })

把这三种类型的菜单增加到页面中。

先改动Top.js,引入button菜单类

  1. uses : ['app.ux.ButtonTransparent', 'app.view.main.region.ButtonMainMenu'],

然后在items中增加

  1. {
  2. xtype : 'buttonmainmenu'
  3. }

再改动Main.js,引入MainMenuTree 和 AccordionMainMenu,在items中增加



 
  1. {
  2. xtype : 'mainmenutree',
  3. region : 'west', // 左边面板
  4. width : 250,
  5. split : true
  6. }, {
  7. xtype : 'mainmenuaccordion',
  8. region : 'west', // 左边面板
  9. width : 250,
  10. split : true
  11. },

经过以上处理,如今界面上会有4种类型的菜单。见下图:








版权声明:本文博主原创文章,博客,未经同意不得转载。

与我一起extjs5(09--其定义菜单2)的更多相关文章

  1. 跟我一起学extjs5(08--自己定义菜单1)

    跟我一起学extjs5(08--自己定义菜单1) 顶部和底部区域已经作好,在顶部区域有一个菜单的button.这一节我们设计一个菜单的数据结构,使其能够展示出不相同式的菜单.因为准备搭建的是一个系统模 ...

  2. 跟我一起学extjs5(11--自己定义模块的设计)

    跟我一起学extjs5(11--自己定义模块的设计)        从这一节開始我们来设计并完毕一个自己定义模块.我们先来确定一个独立的模块的所能定义的一些模块信息. 下面信息仅仅是我自己在开发过程中 ...

  3. java微信开发API解析(四)-自己定义菜单以及个性化菜单实现

    全局说明 * 具体说明请參考前两篇文章. 本文说明 *本文分为五部分: * 工具类AccessTokenUtils的封装 * 自己定义菜单和个性化菜单文档的阅读解析 * 菜单JSON的分析以及构建相应 ...

  4. html css 仿微信底部自己定义菜单

    近期几个月一直从事微信开发,从刚開始的懵懂渐渐成长了一点. 今天认为微信底部自己定义菜单,假设能在html的页面上也能显示就好了. 记得曾经看过某个网页有类似效果.查找了该网页的css.  ok如今h ...

  5. 夺命雷公狗---微信开发17----自定义菜单的事件推送,响应菜单的CLICK

    废话不多说,index.php 代码如下所示: <?php /** * wechat php test */ //define your token require_once "com ...

  6. 微信公共服务平台开发(.Net 的实现)6-------自定义菜单

    用户自定义菜单制作时,需要用到access_token,我们直接使用前面讲解的IsExistAccess_Token()函数.我理解的微信公共平台里面菜单分为button和sub_button,即菜单 ...

  7. 【Cocos2d-X开发学习笔记】第09期:渲染框架之菜单类(CCMenu)的使用

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010    一.菜单项(CCMenuItem) 菜单项 ...

  8. 8、手把手教你Extjs5(八)自定义菜单2

    这一节来定义另外三种类型的菜单类.首先定义菜单按钮类.文件放于app/view/main/region目录下面,文件名为ButtonMainMenu.js. /** * 显示在顶部的按钮菜单,可以切换 ...

  9. 自己定义ActionBar标题与菜单中的文字样式

    自己定义标题文字样式 标题样式是ActionBar样式的一部分,所以要先定义ActionBar的样式 <style name="AppTheme" parent=" ...

随机推荐

  1. Oracle表空间详解

    Oracle表空间详解 1.表空间的分类 Oracle数据库把表空间分为两类:系统表空间和非系统表空间. 1.1系统表空间指的是数据库系统创建时需要的表空间,这些表空间在数据库创建时自动创建,是每个数 ...

  2. SQLServer2012 分页语句执行分析

    上一篇文章提到了,SQLServer2012在使用Offset,Fetch语句分页时,获取了大量不需要的数据,导致查询效率低的问题. 现在让我们来看看,究竟是什么导致SQLServer不能按需取数呢? ...

  3. 在Amazon AWS RHEL 7上安装 配置PPTP VPN

    0 前言 0.1 为什么需要VPN? 国内的VPN不是必须,但是国外的VPN是很有用的.连接到国外的VPN服务器之后就可以访问Google,Facebook, Youtube等网站,没有Google的 ...

  4. POJ 1659 Frogs' Neighborhood

    转载请注明出处:http://blog.csdn.net/a1dark 分析:切图论切的第一道题.也是图论的例题.主要用到一个Havel-Hakimi 定理 有以下两种不合理的情形: (1) 某次对剩 ...

  5. 推荐15个月 Node.js 开发工具

    Node.js 越来月流行.这个基于 Google V8 引擎建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.在本文中.我们列出了2015年最佳的15个 Node.js 开发工具.这些工具 ...

  6. Oracle外键(Foreign Key)使用详细的说明(一)

    Oracle外键(Foreign Key)使用详细的说明(一) 1.目标 演示如何Oracle使用外键数据库 2.什么是外键? 1)在Oracle数据库中,外键是用来实现參照完整性的方法之中的一个.打 ...

  7. Naive Bayes Classification

    Maching Learning QQ群:2 请说明来自csdn 微信:soledede

  8. IOS开发-表视图LV3导航控制器

    学到这里感觉有点难了,其实这篇文章再草稿箱里放了好久了~ 最近对于学习的热情下降了.这不行-抓紧学习走起! 在这一章节的学习中主要针对导航控制器及表视图来建立多视图的应用, 首先要了解一些概念-- 1 ...

  9. 我的CSDN之路

    经营CSDN博客刚满一年,能够说CSDN给我们带来了非常大的帮助,这一年里CSDN见证了我们的成长.以下两篇博客就是我这一年在CSDN的缩影. 这篇是我一年前写的,那时候刚申请CSDN不久:http: ...

  10. 最近跑hadoop遇到的一些问题

    一. [#|2013-09-16T18:19:02.663+0800|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterpris ...