Estou fazendo solicitações à minha API e estou usando o módulo de recursos $ AngularJS. É diferente de $ http, então não sei como lidar com meus erros.
Meu serviço:
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,
}
});
}]);
Meu controlador:
...
Category.query(function(data) {
console.log(data);
});
...
Quero algo assim ou ... Não sei como lidar com erros se minha API não estiver funcionando ..
Category.query().success(function() {
console.log('success');
}).error(function() {
console.log('error');
});
angularjs
angular-resource
Valkirilov
fonte
fonte
Resource.query().$promise.then(function(data) {}, errorFunction)
. Você ainda terá que incluí-lo em todos os locais em que usar uma consulta, mas pelo menos não o redefinirá a cada vez.myResource.$save
emyResource.$delete
é a promessa. Então você pode apenas fazermyResource.$save().then(...)
.Você pode definir um manipulador de erros na etapa de criação do recurso, adicionando um
interceptor
objeto na descrição de um método, com umaresponseError
propriedade, vinculada à sua função de erro.onde
resourceErrorHandler
é uma função chamada em cada erro no método get ou query. Para o problema solicitado, o método get é o único necessário. Claro que você pode aplicar isso a qualquer ação.Existe um outro interceptor
response
para $ resource para capturar uma resposta normal.Os interceptores fazem parte do
$http
módulo, você pode ler mais sobre eles em seus documentos .fonte
Aqui está um novo exemplo ES6 (eu uso TypeScript) em meu ng.resource
e então no meu controlador, 'detalhe' injetado no controlador irá resolver para os dados (bom) ou falso para erro, onde eu manejo a exibição de 404.
fonte