0

我一直在 AngularJS 中编写一个服务来保存一些数据,如果失败,提醒用户。但是,在我创建资源并调用 $save 之后:

myResource.$save(function(success) {
  console.log(success);
}, function(error) {
  console.log(error);
});

我希望错误回调的参数是一个带有数据、状态、标题等的对象,但我得到的只是一个带有“then”函数的对象。我试图在 JSFiddle 中模拟它:

http://jsfiddle.net/RichardBender/KeS7r/1/

但是,此示例按我最初的预期工作。我抽出这个 JSFiddle 示例并将其放入我的项目中,它与我最初描述的问题相同,尽管据我所知其他一切都是平等的。有谁知道为什么会这样?我的项目是用 Yeoman/Bower/Grunt 创建的,但我不明白为什么这些东西会在这里有所作为。

谢谢,理查德

4

1 回答 1

3

我解决了这个问题。错误出现在我的 HTTP 拦截器中,在出现错误代码时,我不小心返回了 $q.reject(promise) 而不是 $q.reject(response)。

错误的版本:

.factory('httpInterceptor', function($q) {
    return function(promise) {
        return promise.then(
            // On success, just forward the response along.
            function(response) {
                return response;
            },
            function(response) {
                // ... where I process the error
                return $q.reject(promise);
            }
        );
    };

固定版本:

.factory('httpInterceptor', function($q) {
    return function(promise) {
        return promise.then(
            // On success, just forward the response along.
            function(response) {
                return response;
            },
            function(response) {
                // ... where I process the error
                return $q.reject(response);
            }
        );
    };

-理查德

于 2013-06-12T06:20:47.867 回答