Меню Extjs вставляет новые элементы с переопределением

У меня есть меню, которое определяется следующим образом:

Ext.define('MyApp.FileBrowserContextMenu', {
    extend: 'Ext.menu.Menu',

    initComponent: function() {
        var me = this;

        Ext.applyIf(me, {
            items: [
                {
                    xtype: 'menuitem',
                    text: 'Edit',
                    listeners: {
                        click: {
                            fn: me.onMenuitemClick,
                            scope: me
                        }
                    }
                },
            ]
        });

        me.callParent(arguments);
    },

    onMenuitemClick: function(item, e, options) {
        var server = this.record;
        var win = Ext.create('widget.ServerWindow', {
            record: server
        });
        win.show();
    }

});

Я хотел бы добавить новые элементы после определения, поэтому я пытаюсь сделать так:

Сначала я определил новый MenuItem:

Ext.define('MyApp.GitMenuItem', {
    extend: 'Ext.menu.Item',
    alias: 'widget.gitmenuitem',

    text: 'Git',

    initComponent: function() {
        var me = this;

        Ext.applyIf(me, {
            menu: {
                xtype: 'menu',
                items: [
                    {
                        xtype: 'menuitem',
                        text: 'Commit',
                        listeners: {
                            click: {
                                fn: me.onMenuitemClick,
                                scope: me
                            }
                        }
                    },
                ]
            }
        });

        me.callParent(arguments);
    },

    onMenuitemClick: function(item, e, options) {

    },

});

Затем я пытаюсь прикрепить новый пункт меню:

Ext.override(MyApp.FileBrowserContextMenu, {
    initComponent: function () {
        var me = this;
        this.callParent();
        me.items.items.push(Ext.create('widget.gitmenuitem'));
    }
});

Кажется, это работает, потому что появляется новый элемент меню, но когда я перехожу, должен появиться новый элемент, но я получаю эту ошибку:

Uncaught TypeError: невозможно установить свойство «activeChild» неопределенного

Любые идеи?


person Charles    schedule 17.05.2012    source источник
comment
Сейчас делаю, по готовности выложу.   -  person Charles    schedule 17.05.2012
comment
Чего именно вы пытаетесь достичь? Похоже, вы выбрали не очень прямой способ решить то, что CAB решил по-другому :)   -  person sha    schedule 17.05.2012
comment
вот скрипка: jsfiddle.net/charlesbourasseau/9ADnx Я хотел бы расширить свое меню с помощью Плагин. Плагин должен иметь возможность добавлять новое меню и пункт меню в существующее меню.   -  person Charles    schedule 17.05.2012
comment
Я нашел решение: jsfiddle.net/charlesbourasseau/9ADnx/11 jsfiddle просто великолепен для решать мелкие проблемы. Я только что изменил: me.items.items.push(Ext.create('widget.gitmenuitem')); в me.add(Ext.create('widget.gitmenuitem'));   -  person Charles    schedule 17.05.2012
comment
Между прочим, ваш applyIf внутри initComponent имеет смысл только в том случае, если вы хотите разрешить вызывающим объектам, которые создают экземпляр объекта, переопределять конфигурацию menu. Что, вероятно, неверно, поскольку это, кажется, причина для вашего класса.   -  person Juan Mendes    schedule 17.05.2012
comment
Я создаю приложение с Sencha Architect, я не писал applyIf...   -  person Charles    schedule 18.05.2012


Ответы (1)


Обычным способом является метод добавления: menu.add(menuItem).

person egerardus    schedule 17.05.2012