私はExtJs 6.2を持っています。アプリケーション(現代のツールキット)を実装し、menu example(トップメニュー)を実装したいと思います。私はMenu
をクリックすると(私はそれをしたいと)extjs kitchensinkメニューのアクセスコントローラ
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'
}]
};
}
});
メニューが現れます:したがって、私は私のMain.js
ファイルでこのコードを持っています。しかし、私は、メニュー内の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