Come gestire gli errori del servizio risorse $ in AngularJS

Sto facendo richieste alla mia API e sto usando il modulo risorsa AngularJS $. È diverso da $ http, quindi non so come gestire i miei errori.

Il mio servizio:

var appServices = angular.module('app.services', ['ngResource']); appServices.factory('Category', ['$resource', function($resource){ return $resource('/apicategoryerr/?format=:format', {}, { query: { method: 'GET', params: { format: 'json'}, isArray: true, } }); }]); 

Il mio controller:

 ... Category.query(function(data) { console.log(data); }); ... 

Voglio qualcosa di simile a questo o .. Non conosco un modo per gestire gli errori se la mia API non funziona ..

 Category.query().success(function() { console.log('success'); }).error(function() { console.log('error'); }); 

    puoi passare il gestore degli errori come secondo parametro da query .

     Category.query(function(data) {}, function() {}); 

    MODIFICARE:

    per rendere le cose un po ‘più chiare, alcuni esempi:

     var Resource = $resource('/restapi/resource'); Resource.query(function(data) { // success handler }, function(error) { // error handler }); Resource.query({ 'query': 'thequery' },function(data) { // success handler }, function(error) { // error handler }); Resource.query().$promise.then(function(data) { // success handler }, function(error) { // error handler }); Resource.query({ 'query': 'thequery' }).$promise.then(function(data) { // success handler }, function(error) { // error handler }); 

    È ansible definire un gestore di errori nel passaggio di creazione della risorsa aggiungendo un object interceptor nella descrizione di un metodo, con una proprietà responseError , collegata alla funzione di errore.

     function resourceErrorHandler(response) { ... } $resource('/path/:param/', {} , { 'get': {method:'GET', interceptor : {responseError : resourceErrorHandler}}, 'save': {method:'POST'}, 'query': {method:'GET', isArray:true, interceptor : {responseError : resourceErrorHandler}}, 'remove': {method:'DELETE'}, 'delete': {method:'DELETE'} }; 

    dove resourceErrorHandler è una funzione chiamata su ogni errore nel metodo get o query. Per il problema richiesto, il metodo get è l’unico necessario. Naturalmente puoi applicarlo a qualsiasi azione.

    Esiste un’altra response intercetta per $ risorsa per ottenere una risposta normale.

      {'get': {method:'GET', interceptor : {response : resourceResponseHandler}}, 

    Gli intercettori fanno parte del modulo $http , puoi leggere ulteriori informazioni su di loro nei loro documenti .

    Ecco un nuovo esempio di ES6 (io uso TypeScript) sul mio ng.resource

     resolve: { detail: function (myService, $stateParams) { return myService.getEventDetail({ id: $stateParams.id }).$promise.then(data => data, error => false ); } } 

    e poi nel mio controller, il ‘dettaglio’ iniettato nel controller o risolverà i dati (buono) o falso per errore, dove gestisco il display di 404.