Ext.app.Controllerクラスのcontrol()メソッドを使用するExtJSでは、コントローラーのinit()メソッド内のExt.ComponentQueryを介して選択されたコンポーネントにリスナーを追加できます。
これを行うと、デフォルトで、ハンドラー関数内にコントローラースコープがあります。ここで他のスコープを指定する方法はありますか?
たとえば、この場合:
Ext.define('BackOffice.controller.BaseList', {
extend: 'Ext.app.Controller',
refs: [
// some refs
],
init: function() {
this.control({
'bo-list-view > toolbar > button[action=create-new]': {
click: this.onCreateNewClick
},
'bo-list-view > toolbar > button[action=edit]': {
click: this.onEditClick
},
'bo-list-view > toolbar > button[action=refresh]': {
click: this.onRefreshClick
}
})
},
// ...
});
ハンドラー関数では、この情報に基づいていくつかのアクションを実行するためにクリックされた正確なボタンを知りたいです。
スコープフィールドを介してボタン宣言内でスコープを指定しようとしましたが、これは役に立ちません。
また、Ext.bind()を使用して問題を解決したかったのですが、関数をバインドするには、ボタンへの参照が再度必要です。
.on()を使用してリスナーを追加することは、アプリケーションの起動メソッドの前に呼び出されるため、init()では機能しません。
スコープを保存するコントローラーからこのボタンにリスナーを追加する方法はありますか?
アップデート
ボタンへの参照は、最初の引数としてハンドラー関数に渡されます。これで私の問題は解決しますが、control()メソッド内でスコープを定義する方法を探しています。