У меня есть ExtJs 6.2. приложение (современный инструментарий), и я хочу реализовать menu example (верхнее меню). Поэтому у меня есть этот код в моем Main.js
файле:Контроллер доступа в примере меню кухни кухни extjs
Ext.define('MyApp.view.main.Main', {
extend: 'Ext.Container',
xtype: 'app-main',
layout: {
type: 'vbox',
pack: 'center',
align: 'stretch'
},
controller: 'mainController',
margin: '0 0 0 0',
items: [{
xtype: 'toolbar',
docked: 'top',
style: 'background-color: red;',
items: [{
text: 'Menu',
handler: function() {
Ext.Viewport.toggleMenu('top');
}
}]
}],
initialize: function() {
Ext.Viewport.setMenu(this.getMenuCfg('top'), {side: 'top' });
},
doDestroy: function() {
Ext.Viewport.removeMenu('top');
this.callParent();
},
getMenuCfg: function(side) {
return {
items: [{
text: 'Foo',
handler: 'onFooClick',
controller: 'mainController'
}]
};
}
});
Когда я нажимаю на Menu
меню показывает вверх (как я хочу). Но когда я нажимаю на foo
кнопки внутри меню я получаю эту ошибку:
No method named "onFooClick" on Ext.Button(...)
Мой контроллер MainController.js
в том же каталоге, выглядит следующим образом:
Ext.define('MyApp.view.main.MainController', {
extend: 'Ext.app.ViewController',
alias: 'controller.mainController',
onFooClick: function() {
console.log("foo pressed");
}
});
Я уже пытался установить scope
, как это (в функции getMenuCfg
):
items: [{
text: 'Foo',
handler: 'onFooClick',
controller: 'mainController',
scope: 'controller'
}]
Но тогда я получаю эту ошибку:
Uncaught Error: Named method "onFooClick" requires a scope object(…)
Как я могу получить доступ к своему контроллеру, используя это меню?
Пожалуйста, проверьте все вхождения 'onCreateFolderClick',' onFooClick', 'onFooClicked', используете ли вы одно и то же имя, поэтому мы можем быть уверены, что проблема не является неправильно названной функцией или вызовом. – Alexander
Я перепутал имена метода при создании минимального примера для stackoverflow, но я понял это в своем приложении (просто проверил его, чтобы убедиться). Есть ли что-то еще, что может вызвать проблему? – Peter