您好我使用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
的更多文档,但我仍然坚持这个问题。
谢谢。
答案 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);
}
};
});
});