У меня есть меню, которое определяется следующим образом:
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» неопределенного
Любые идеи?
applyIf
внутриinitComponent
имеет смысл только в том случае, если вы хотите разрешить вызывающим объектам, которые создают экземпляр объекта, переопределять конфигурациюmenu
. Что, вероятно, неверно, поскольку это, кажется, причина для вашего класса. - person Juan Mendes   schedule 17.05.2012