我正在寻找关于如何完成以下设计模式的一些输入。
背景:我有两个工厂和一个控制器:
FirstFactory
:这是包含应用程序依赖的所有数据的数据存储SecondFactory
:这是$http.get
方法的列表。 getAllCities
方法只返回一个承诺Controller
:这是数据从SecondFactory
解析然后设置为FirstFactory.journey
的位置。现在控制器工作正常,但我试图让SecondFactory.getAllCities()
中的数据在运行时FirstFactory
中解析,而不是等待Controller
更新它。 / p>
所以目前我有一个控制器可以执行以下操作:
build = function() {
return SecondFactory.getAllCities()
.then(function(response) {
FirstFactory.journey = response;
});
};
这很好用,并使用方法SecondFactory.getAllCities()
返回的数据更新工厂。但是我觉得控制器不应该是default
或init
数据集的设置,我认为工厂应该自己完成这个。
我可能错误地认为以下内容可以起作用,而不是调用控制器内的SecondFactory
,我只是将此调用移动到FirstFactory
,以便它可以自行解决它实例化而不是依靠控制器用数据填充FirstFactory.journey
。
var build;
//This is a call to a factory that contains the data
//I want to grab and store this in my factory on run
build = function() {
SecondFactory.getAllCities()
.then(function(response) {
//Why does this not get returned?
console.log(response);
return response
})
};
//This is the factory object that is returned
return {
journey: build()
}
但是上述方法并不奏效。构建函数中的console.log
包含我需要的数据,但该函数不会返回它。这是我实施承诺或更广泛的设计模式问题的问题吗?