1

我有两家autoload: true正在加载数据的商店。我想在这两个都加载后填充我的 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 回答