私は新しい ExtJs 5 を試しています。ExtJs5 の定義された MVC パターンに従って小さなアプリを作成しました。
ViewControllers
それぞれに使用していますView
。
問題の説明: ここで、2 つの VC (Controller1 と Controller2) があるとします。それぞれ独自の方法があります。Controller1からController2のメソッドを呼び出したい。Controller1 から Controller2 に関連付けられたビューを更新したいと考えています。
E.g. Suppose there is a separate view for Status Bar and a ViewController(StatusBarController).
This VC has a method to update the view based on whatever message it receives as input parameter.
All the other controllers in the application will call this VCs method to update the status of the application on the status bar.
以前のバージョンでthis.getController('StatusBarController')
は、任意のコントローラーへのハンドルを取得し、そのメソッドを呼び出すために使用されていました。
しかし、ViewController を使用する場合、これは私の場合には機能しません。
このことを達成する方法を教えてもらえますか?また、それがそのようなことを行うための正しい/理想的な方法なのか、それともより良いオプションがあるのか?
これが私のコードです:
ステータスバービュー:
Ext.define('MyApp.view.statusbar.StatusBarView', {
extend : 'Ext.panel.Panel',
controller: 'StatusBarController',
region : 'south',
xtype : 'status-bar-panel',
html : 'This is a status bar'
});
ステータスバーコントローラー:
Ext.define('MyApp.controller.StatusBarController', {
extend : 'Ext.app.ViewController',
alias: 'controller.StatusBarController',
updateStatusBar : function(message) {
this.getStatusBarView().update(message);
}
});
アプリ内のその他のコントローラー:
Ext.define('MyApp.controller.ResourcesPanelController', {
extend : 'Ext.app.ViewController',
alias : 'controller.ResourcesController',
onItemClick : function(tree, record, item, index, e, eOpts) {
// here I am calling the other controller's method.
this.getController('StatusBarController').updateStatusBar(
record.data.text + ' has been clicked');
}
});