自填式AngularJS工厂

时间:2015-10-15 08:47:22

标签: angularjs angularjs-factory

我正在寻找关于如何完成以下设计模式的一些输入。

背景:我有两个工厂和一个控制器:

  • 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()返回的数据更新工厂。但是我觉得控制器不应该是defaultinit数据集的设置,我认为工厂应该自己完成这个。

我可能错误地认为以下内容可以起作用,而不是调用控制器内的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包含我需要的数据,但该函数不会返回它。这是我实施承诺或更广泛的设计模式问题的问题吗?

0 个答案:

没有答案