Store#load には、callback を渡せるぞ!
「Store#load の callback を活用してはいかが?」
Store のロードが行われた時になんらかの処理を行いたいとすると、通常は、load イベントのリスナーを定義すると思う。こんな感じ。
var aStore = new Ext.data.JsonStore({ storeId: 'xxxx', url: '/xxx', root: 'root', fields: ['f1', 'f2', 'f3], listeners: { load: function(store, recs, opt) { // ロード時のなんらかの処理 } } }); aStore.load();
実は、load メソッドには、callback 関数を渡すことができるので、こんな書き方ができる。
var aStore = new Ext.data.JsonStore({ storeId: 'xxxx', url: '/xxx', root: 'root', fields: ['f1', 'f2', 'f3] }); aStore.load({callback: function(rec, opt, success) { // ロード時のなんらかの処理 }});
例えば、ロードが終わった後にグリッドの先頭行を選択状態にするとか、画面に配置してあるボタンを有効な状態に変更するといったような場合は、後者の書き方が適している。なぜなら、画面のパーツに変更を加えた時に、Store のソースを変更する必要がないので、Store の独立性が維持されるからだ。
もちろん、Store にリスナーを追加した方が望ましいケースもある。適宜、使い分けてくだされ。