0
在我的角度應用$更新功能遞延我更新任務如下
task.$update().then(function (task) {
// success
}, function (response) {
// failure
});
從後端我得到一個422
回來,但第一個回調被調用。
我的資源看起來像這樣
angular.module('App')
.factory('Task', function ($resource) {
var resource = $resource('/admin/tasks/:id', { id: '@id' }, {
new: {
method: 'GET',
url: '/admin/tasks/new'
},
update: {
method: 'PUT'
},
...
});
return resource;
});
的問題是,在什麼情況下被稱爲第二個回調?而且如果需要的話,我能在update
方法做,使得第二回調叫什麼名字?
UPDATE:之所以成功回調被調用所有的時間是因爲一個錯誤攔截我
angular
.module('App')
.factory('errorInterceptor', function ($location, $q, $rootScope) {
return {
responseError: function (response) {
if (response.config.url.match($location.$$host)) {
$rootScope.error = response;
return $q.reject(response);
}
return $q.when(response);
}
};
});
很顯然,如果你做return $q.when(response);
你告訴角度說,一切都很好,對不對?
我已經試過你的suggesion [這裏](http://jsfiddle.net/3PUxx/78/)和它的作品。但在我的應用程序中,第一個回調仍然被調用。在我的應用程序的一個HTTP狀態代碼'422',它可以是它與此有關。凡德的文檔中描述了它是如何決定哪個回調被調用?也許可以定義你自己的'$ update'功能? –
我也發現了[這](http://stackoverflow.com/questions/18907117/angular-resource-not-invoking-my-error-callback-function)後,它使用攔截器來拒絕迴應?! 「4XX」響應真的需要嗎? –
$ resource使用$ http,因此$ http的文檔適用: > 200到299之間的響應狀態代碼被視爲成功狀態,並且會導致調用成功回調。因此,任何> = 400(不重定向)都會觸發錯誤回調。 如果您想要定義一個針對所有請求調用的回調函數,則只需要一個攔截器。攔截器將在$ resource方法中的回調定義之前運行。 –