AngularJS ngResource $保存反馈

时间:2014-04-07 15:44:25

标签: angularjs ngresource

您好我使用ngResource $save方法,我有两种不同的行为,我不明白为什么

首先我以这种方式使用它:

    $scope.user = new User($scope.user);
    $scope.user.$save(function () {
       $window.location.href = //redirection here;
    }, function (response) {
        $scope.form.addErrors(response.data.errors);
    });

当我进行类似操作时,我有另一个控制器,但即使从服务器获得404或422错误,第一个回调也会被执行,错误回调将被忽略。

有没有人知道这件事?我在谷歌搜索了几个小时,试图找到有关$save的更多文档,但我仍然坚持这个问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

嗯,问题出在我用来检测401(未经授权的错误)的拦截器上

这里是拦截器,注意你必须返回$ q.reject(响应),否则不会调用其他回调(在我的情况下是ngResource中的错误回调。$ save)

MyApp.config(function ($httpProvider) {
    $httpProvider.interceptors.push(function($window, $q) {
        return {
            'responseError': function(response) {
                if (response.status == 401) { // Unathorized
                    $window.location.href = 'index.html';
                }
                // return response; <-- I was doing this before cancelling all errors
                return $q.reject(response);
            }
        };
    });
});