В Extjs4, как я могу перенастроить существующий объект меню? - PullRequest
0 голосов
/ 08 сентября 2011

В extjs4 как я могу установить меню в вызове позже (из), а не в функции 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 голосов
/ 08 сентября 2011

Не уверен насчет Ext4, но он должен соответствовать той же концепции, что и 3. Для моего приложения мне пришлось динамически устанавливать пункты меню на основе элемента сетки, по которому они щелкали правой кнопкой мыши (это было для ContextMenu, но должно быть таким же)

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

Извлечет первый пункт меню, а оттуда вы можете легко получить остальные (1, 2, 3). Если у вас есть это, вы можете использовать setText(). Оттуда вы должны иметь доступ ко всем Ext.menu.Item методам.

...