Angular Factory - 返回两组数据

时间:2015-02-17 19:24:19

标签: angularjs

我在Angular有一个工厂,我想进行两次API调用并将数据返回给我的控制器。我在返回两组数据时遇到了一些麻烦 - 尤其是使用.catch。我是一个Angular n00b,所以我对异步承诺有点不屑一顾。我已经尝试过使用$ q.all但它似乎没有使用捕获。如果您需要更多信息,请告诉我!!

  .factory('initializeCoreModels', ['$q','userModel', 'redirect', 'countryList',
                      function($q, userModel, redirect, countryList){
    return function(){
      return countryList.getAll()
      return userModel.getModel()
        .catch(function(error){
          if (error.status){
            return redirect.hrefUrl('/');
          }
          return $q.reject(error);
        });


    };

1 个答案:

答案 0 :(得分:1)

你只能有一次回归。所以你需要返回一个带有两个promises的对象:

app.factory('initializeCoreModels',['$q','userModel', 'redirect', 'countryList', function ($q, userModel, redirect, countryList) {
    var returnObj = {
      countryList: countryList.getAll()
      userModel: userModel.getModel()
    };
    returnObj.userModel.catch(function(error){
      if (error.status){
        return redirect.hrefUrl('/');
      }
      return $q.reject(error);
    });
    return returnObj;
}]);

这仍会检查您的userModel承诺,但您现在可以使用.catch()

访问您的承诺