[英]Reject deferred in $update function of an angular $resource
在我的角度應用程序中,我更新了以下任務
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
方法中做什么,以便調用第二個回調?
更新:一直調用成功回調的原因是因為我有一個錯誤攔截器
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);
你告訴安格爾一切都很好,對吧?
回調被指定為$ update()函數的參數,如下所示:
$task.$update(function(task) {}, function(response) {})
請參閱$ resource的官方文檔:
可以使用以下參數調用類對象或實例對象上的操作方法:
- HTTP GET“類”操作:Resource.action([參數],[成功],[錯誤])
- 非GET“類”操作:Resource.action([參數],postData,[成功],[錯誤])
- 非GET實例操作:instance。$ action([參數],[成功],[錯誤])
事實是,與$ http不同,$ update或任何資源方法都不直接返回promise。 他們返回一個空引用。
請注意,$ resource內部使用$ http ,因此$ http docs適用(關於回調):
在200到299之間的響應狀態代碼被視為成功狀態,並將導致調用成功回調。 請注意,如果響應是重定向,則XMLHttpRequest將透明地跟隨它,這意味着不會為此類響應調用錯誤回調。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.