Estoy haciendo solicitudes a mi API y estoy usando el módulo de recursos AngularJS $. Es diferente de $ http, así que no sé cómo manejar mis errores.
Mi servicio:
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,
}
});
}]);
Mi controlador:
...
Category.query(function(data) {
console.log(data);
});
...
Quiero algo como esto o ... No sé cómo manejar los errores si mi API no funciona ...
Category.query().success(function() {
console.log('success');
}).error(function() {
console.log('error');
});
angularjs
angular-resource
Valkirilov
fuente
fuente
Resource.query().$promise.then(function(data) {}, errorFunction)
. Aún tendrá que incluirlo en cada lugar donde use una consulta, pero al menos no lo redefinirá cada vez.myResource.$save
ymyResource.$delete
es la promesa. Así que puedes hacerlomyResource.$save().then(...)
.Puede definir un controlador de errores en el paso de creación del recurso agregando un
interceptor
objeto en la descripción de un método, con unaresponseError
propiedad, vinculada a su función de error.donde
resourceErrorHandler
es una función llamada en cada error en el método get o query. Para el problema planteado, el método get es el único necesario. Por supuesto, puede aplicar eso a cualquier acción.Existe otro interceptor
response
para que $ resource capte una respuesta normal.Los interceptores son parte del
$http
módulo, puede leer más sobre ellos en sus documentos .fuente
Aquí hay un nuevo ejemplo de ES6 (uso TypeScript) en mi ng.resource
y luego, en mi controlador, el 'detalle' inyectado en el controlador se resolverá en los datos (bueno) o falso para el error, donde manejo la pantalla de 404.
fuente