在Extjs 4中,如何配置现有菜单对象?

时间:2011-09-08 09:11:22

标签: json extjs menu extjs4

在extjs4中如何在稍后(from)中调用菜单,而不是在initComponent函数中?

换句话说:如何重新配置​​现有菜单对象(菜单项)?

Ext.define('My.view.dashboard.CategoryMenu', {
extend: 'Ext.menu.Menu',
alias: 'widget.categorymenu',
id: 'kategoriaMenu',

initComponent: function() {                
    this.callParent(arguments);
},

fetchMenu: function(categoryId) {
    var me=this;

    Ext.Ajax.request(
               {
                url: '/resources/categoryMenu.json',
                method: 'POST',
                params:
                {
                 id: categoryId
                },
                success: function(result, request)
                {
                 var jsonData = Ext.decode(result.responseText);
                 categoryItems=jsonData.items;
                 Ext.apply(me.items, categoryItems);                     
                }
               });
    }

});

这是原始代码什么是initComponent初始化的工作代码:

initComponent: function() {             

                Ext.apply(this, {
        items:
        [
            {
                text: 'Recently Added (last 7 Days)',
                itemId: 'recentlyAdded'
            },
             {
                text: 'Open  Worklist',
                iconCls: 'worklist-icon',
                itemId: 'openWorklist'
            },{
                text: 'Open Create Screen',
                iconCls: 'open-create-screen-icon',
                itemId: 'openCreateScreen'
            }
        ]
    });

    this.callParent(arguments);
},

这就是我所说的:

        ...
        var ctxMenu = this.getCategoryMenu();
        ctxMenu.fetchMenu(record.data.id);  // get current menu content         
        ctxMenu.setPosition(event.getXY());
        ctxMenu.show();
        ...

1 个答案:

答案 0 :(得分:0)

不确定Ext4,但它应该与3的概念相同。对于我的应用程序,我必须根据他们右键单击的网格项动态设置菜单项(这是针对ContextMenu,但它应该是相同的)

ctxMenu.items.items[0]
// items.items because you're nested inside a menu

将检索第一个菜单项,并从那里轻松获得其他菜单项(1,2,3)。完成后,您可以使用setText()。您应该可以访问所有Ext.menu.Item方法。