resource renderizar escape agregar angularjs angular-resource

renderizar - Cómo manejar los errores de $ resource service en AngularJS



renderizar html angularjs (3)

Aquí hay un nuevo ejemplo de ES6 (uso TypeScript) en mi ng.resource

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

y luego en mi controlador, ''detalle'' inyectado en el controlador se resolverá con los datos (bueno) o falso para el error, donde manejo la pantalla de 404.

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''); });


Puede definir un controlador de errores en el paso de creación del recurso agregando un objeto interceptor en la descripción de un método, con una propiedad responseError , vinculada a su función de error.

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''} };

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, puedes aplicar eso a cualquier acción.

Existe otra response interceptor para $ recurso para capturar una respuesta normal.

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

Los interceptores son parte del módulo $http , puede leer más sobre ellos en sus documentos .


puede pasar el controlador de errores como un segundo parámetro para query .

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

EDITAR:

para aclarar un poco las cosas, algunos ejemplos:

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 });