zoukankan      html  css  js  c++  java
  • ExtJS5_自定义菜单2

    这一节来定义另外三种类型的菜单类。首先定义菜单按钮类。文件放于app/view/main/region目录下面,文件名为ButtonMainMenu.js。

    /**
     * 显示在顶部的按钮菜单,可以切换至标准菜单,菜单树
     */
    Ext.define('app.view.main.region.ButtonMainMenu', {
        extend : 'app.ux.ButtonTransparent',
        alias : 'widget.buttonmainmenu',
        viewModel : 'main',
        text : '菜单',
        glyph : 0xf0c9,
        initComponent : function() {
            this.menu = this.getViewModel().getMenus();
            this.callParent();
        }
    })

    第二种树状菜单,文件名为MainMenuTree.js。

    /**
    * 树状菜单,显示在主界面的左边
    */
    Ext.define('app.view.main.region.MainMenuTree', {
        extend : 'Ext.tree.Panel',
        alias : 'widget.mainmenutree',
        title : '系统菜单',
        glyph : 0xf0c9,
        rootVisible : false,
        lines : true,
        viewModel : 'main',
    
        initComponent : function() {
            this.store = Ext.create('Ext.data.TreeStore', {
                        root : {
                            text : '系统菜单',
                            leaf : false,
                            expanded : true
                        }
                    });
            var menus = this.getViewModel().get('systemMenu');
            var root = this.store.getRootNode();
            for (var i in menus) {
                var menugroup = menus[i];
                var menuitem = root.appendChild({
                            text : menugroup.text,
                            expanded : menugroup.expanded,
                            icon : menugroup.icon,
                            glyph : menugroup.glhpy
                        });
                for (var j in menugroup.items) {
                    var menumodule = menugroup.items[j];
                    var childnode = {
                        moduleId : menumodule.text,
                        moduleName : menumodule.module,
                        text : menumodule.text,
                        leaf : true
                    };
                    menuitem.appendChild(childnode);
                }
            }
            this.callParent(arguments);
        }
    })
    第三种为折叠式菜单,文件名为AccordionMainMenu.js。
    /**
    * 折叠式(accordion)菜单,样式可以自己用css进行美化
    */
    
    Ext.define('app.view.main.region.AccordionMainMenu', {
        extend : 'Ext.panel.Panel',
        alias : 'widget.mainmenuaccordion',
        title : '系统菜单',
        glyph : 0xf0c9,
    
        layout : {
            type : 'accordion',
            animate : true
        },
    
        viewModel : 'main',
    
        initComponent : function() {
            this.items = [];
            var menus = this.getViewModel().get('systemMenu');
            for (var i in menus) {
                var menugroup = menus[i];
                var accpanel = {
                    menuAccordion : true,
                    xtype : 'panel',
                    title : menugroup.text,
                    bodyStyle : {
                        padding : '10px'
                    },
                    layout : 'fit',
                    dockedItems : [{
                                dock : 'left',
                                xtype : 'toolbar',
                                items : []
                            }],
                    glyph : menugroup.glyph
                };
                for (var j in menugroup.items) {
                    var menumodule = menugroup.items[j];
                    accpanel.dockedItems[0].items.push({
                                xtype : 'buttontransparent',
                                text : this.addSpace(menumodule.text, 12),
                                glyph : menumodule.glyph,
                                handler : 'onMainMenuClick'
                            });
                }
                this.items.push(accpanel);
            }
            this.callParent(arguments);
        },
    
        addSpace : function(text, len) {
            console.log(text.length);
            var result = text;
            for (var i = text.length; i < len; i++) {
                result += ' ';
            }
            return result;
        }
    
    })
    把这三种类型的菜单加入到页面中。先修改Top.js,引入按钮菜单类
    uses : ['app.ux.ButtonTransparent', 'app.view.main.region.ButtonMainMenu'],

    然后在items中加入

    {
        xtype : 'buttonmainmenu'
    }

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

    {
        xtype : 'mainmenutree',
        region : 'west', // 左边面板
        width : 250,
        split : true
    }, {
        xtype : 'mainmenuaccordion',
        region : 'west', // 左边面板
        width : 250,
        split : true
    },

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

  • 相关阅读:
    mysql怎么导入大文件的sql文件
    php函数研究
    php实现实现代码多主从,切换,轮询,健康检查
    php实现单个用户禁止重复登录,防止同一用户同时登陆
    php使用p3p实现cookies跨域设置 实现单点登录,全站登录
    实现页面浏览统计
    遍历目录删除指定MD5值的文件
    boot.img的修改
    “逃离大厦”游戏的破解
    Android漏洞——将Android恶意代码隐藏在图片中
  • 原文地址:https://www.cnblogs.com/asks/p/4098399.html
Copyright © 2011-2022 走看看