【发布时间】:2014-09-03 14:48:16
【问题描述】:
我有一个使用 Facebook 的 Flux 架构开发的网络应用程序。该页面有两个视图:一个显示 TODO 项目列表。第二个视图显示一组随机的 TODO 项。
显然有两个问题需要由商店管理。第一个是可用 TODO 的列表。第二个是随机选择的TODO项目列表。
因此,我有一个TODOStore,他只关心管理可用的 TODO 项目。它对loadTODOs、addTODO、deleteTODO、editTODO 有动作。启动时,此存储不会加载所有 TODO 项。我希望它仅在必要时从数据库中检索 TODO 项列表。
第二家商店是RandomTODOListStore。它的职责是管理随机选择的 TODO 项。在我看来,RandomTODOListStore 应该使用TODOStore.getTODOItems() 通过TODOStore 访问 TODO 项。
function RandomTODOListStore() {
var $randomTODOs = [];
dispatcher.register(function(payload) {
var action = payload.action;
switch (action.actionType) {
case Constants.LOAD_RANDOM_TODO:
loadRandomTODO();
break;
}
});
function loadRandomTODO() {
$randomTODOs = selectRandom(TODOStore.getTODOList());
emit("change");
}
}
问题在于,如前所述,TODOStore 在启动时不会加载 TODO 项。
问题是:“RandomTODOListStore如何保证TODOStore已经检索到TODO项目?”。
【问题讨论】: