AngularJS提供工厂方法的成功回调

时间:2014-07-28 09:19:00

标签: javascript angularjs ionic-framework

我有一个简单的工厂,它在async.-request之后返​​回一个promise。

getUpdates: function(){
    var q = $q.defer();
    $http.get(...)
    .success(function(data, status, headers, config) {
        q.resolve(data);
    })
    .error(function(data, status, headers, config) {
        q.reject(status);
    });
    return q.promise;
}

在我的控制器中,我只需调用getUpdates方法并接收承诺。

var updates = factory.getUpdates();

如何提供getUpdates方法的成功/错误功能?

factory.getUpdates().success(function(promise){...}).error(function(err)...

我必须添加到getUpdates函数中吗?

3 个答案:

答案 0 :(得分:2)

$http服务已经返回一个承诺,在这种情况下无需使用$q.defer()来创建另一个承诺。你可以像这样写:

getUpdates: function () {
  return $http.get(...);
}

这样,success()error()方法仍然可用。

或者,如果您确实有使用$q.defer()的原因,请将其包含在问题中。

答案 1 :(得分:1)

then能够处理承诺的成功和失败:

factory.getUpdates()
  .then(function(value) {
    // handle success
  }, function(reason) {
    // handle failure
  });

答案 2 :(得分:0)

factory.getUpdates().then(
  //onSucess
  function(response)
  {
    // ...  
  },
  //onError

  function()
  {
    // ...      
  }
);