タブパネルベースのアプリはほぼ完成していますが、タブパネルの各タップに表示され、特定のタブのコンテンツがレンダリングされると消えるグローバルロードマスクを追加して改善したいと思います。
何をリッスンする必要があるのか少しわかりません。activeitemchangeでロードマスクをアクティブにしてから、グローバルペイントイベントを使用してマスクを解除する必要がありますか?これを行う最も効率的な方法はメインコントローラーであると想定しています。複数のリスナーを使用する代わりに、1回だけ実行する必要があるためです(私が見つけた唯一の例のように)。これは機能しているようで、タブアイテムをクリックするとロードマスクが表示されますが、ペイントされたイベントでマスクを解除する方法がわかりません。
Ext.define('TCApp.controller.Main', {
extend: 'Ext.app.Controller',
config: {
refs: {
tabpanel: 'tabpanel'
},
control: {
tabpanel: {
activeitemchange: 'onActiveItemChange'
}
}
},
onActiveItemChange: function (self, newItem) {
Ext.Viewport.setMasked({ xtype: 'loadmask', message: 'Loading...', indicator:true});
console.log('Activeitemchanged');
}
});
Ext.Viewport.setMasked(false);
これは、メインコントローラーでペイントされたイベントを実行するための最良の方法ですか?これを行う方法がよくわかりません。
私もこれを読んでいますが、あまり役に立たないと思います: