Angular $资源总是调用成功回调

时间:2014-11-13 11:34:04

标签: javascript angularjs coffeescript cors

我对Angular $资源有疑问。我在启用了CORS的API服务器上使用它。

无论服务器返回什么错误代码(尝试过500,422,409),资源总是调用成功回调。

控制器中的动作:

@SpacePostsService.save { spaceId: @space._id }, @post, @_createSuccess, (errors)=>¬
  @_createError(errors, form)

SpacePostsService:

SpacePostsService = $resource postsUrl, {},¬
  query:¬
    isArray: true¬
    method: 'GET'¬
    responseType: 'json'¬
    transformResponse: (data, headers)->¬
      results = data.results || data¬
      results = [results] unless _.isArray(results)¬
      results

有没有人知道我做错了什么?

PS。出于可读性目的,我没有显示所有代码,SpacePostService是一个工厂,它已正确地注入控制器。

1 个答案:

答案 0 :(得分:2)

最后我发现了这个问题。事实证明我在其他地方定义了全局拦截器:

AjaxInProgress =
  request: (config)->
    $rootScope.$broadcast 'ajax:in-progress'
    config
  response: (response)->
    $rootScope.$broadcast 'ajax:finished'
    response
  responseError: (response)->
    $rootScope.$broadcast 'ajax:finished'
    return response

responseError方法中的最后一行是最重要的一行 - 因为我没有拒绝这个承诺,所以Angular认为我从错误中恢复了,它在$ resource函数中调用了成功回调。我将AjaxInProgress中的最后一行更改为:

responseError: (response)->
    $rootScope.$broadcast 'ajax:finished'
    $q.reject(response)

它解决了这个问题。

谢谢你们的帮助。