Как получить ответ об ошибке из запроса 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 без свойства ресурса.

- Справочник по API службы AngularJS $

Другие вопросы по тегам