1

autoload: trueデータがロードされている 2 つのストアがあります。これらの両方がロードされた後、UI を埋めたいと思います。私はMVCアーキテクチャに従っているので、コントローラーで次のようなことをしようとしています:

store1.on('load', me.setUpIfBothStoresReady, me);
store2.on('load', me.setUpIfBothStoresReady, me);

setUpIfBothStoresReady: function() {
    if(store1.isSuccessfullyLoaded() && store2.isSuccessfullyLoaded()) {
        // do work
    }
}

問題は、この時点で、一方または両方のストアがすでにロードされている可能性があることです。これらのストアの負荷を手動で制御する以外に、両方が完了した後にのみ作業を行うために使用できる設計パターンはありますか?

4

1 に答える 1

1

遅延イベントで whenjs のようなものを使用できます。

https://github.com/cujojs/when/wiki/Examples

または、独自に記述します。

loadStores: function() {
    ...
    me.loaded = 0;
    store1.on('load', me.setUpIfBothStoresReady, me);
    store2.on('load', me.setUpIfBothStoresReady, me);
},

...

setUpIfBothStoresReady: function() {

    ++this.loaded;
    if (this.loaded == 2) {
        //do work
    }
}

いくつかの店舗がある場合は、配列を使用することをお勧めします。

于 2013-04-19T01:35:04.713 に答える