Как получить ответ об ошибке из запроса ngResource $resource
Привет! Я работаю над своим первым угловым проектом, и я столкнулся с этой проблемой, так как не смог увидеть значение от службы, которую я использую, на одном из моих контроллеров.
также characterService.query() в порядке, просто значение errorMessage не отображается
Спасибо за вашу помощь
Обслуживание:
angular.module('characterResource',['ngResource'])
.factory('characterService',['$resource',function($resource){
var self = this;
self.errorMessage = false;
return $resource('http://gateway.marvel.com:80/v1/public/characters?limit=90&apikey=APIKEY',null, {
query: {
method: 'GET',
isArray: false,
transformResponse: function(data) {
return angular.fromJson(data).data;
},
interceptor:{
responseError:function(error){
console.log(error);
self.errorMessage = true;
}
}
}
});
}]);
контроллер:
angular.module('CharactersCtrl', []).controller('CharactersController',['characterService', function(characterService) {
var self = this;
self.sortType = 'name'; // set the default sort type
self.sortReverse = false; // set the default sort order
//self.search = ' '; // set the default search/filter term
self.errorMessage = characterService.errorMessage;
console.log(characterService.errorMessage);
self.init = function(){
self.getCharacters();
}
self.getCharacters = function(){
self.characters = characterService.query();
}
self.init();
}]);
1 ответ
Нет необходимости использовать перехватчик ошибок. Чтобы получить ответ об ошибке от ngResource
запрос, используйте .catch
метод на его $promise
имущество.
self.getCharacters = function(){
self.characters = characterService.query();
self.characters.$promise.catch( function(errorResponse) {
console.log(errorResponse);
self.errorMessage = true;
});
}
Из документов:
Экземпляры и коллекции ресурса имеют следующие дополнительные свойства:
$promise
: обещание исходного взаимодействия с сервером, которое создало этот экземпляр или коллекцию.В случае успеха обещание разрешается с помощью того же экземпляра ресурса или объекта коллекции, обновляемого данными с сервера. Это облегчает использование в разделе разрешения $routeProvider.when() для отсрочки рендеринга представления до тех пор, пока не будут загружены ресурсы.
В случае сбоя обещание отклоняется с объектом ответа http без свойства ресурса.