如何处理AngularJS中的$资源服务错误
我正在向我的API发出请求,我正在使用AngularJS $资源模块。 它不同于$ http,所以我不知道如何处理我的错误。
我的服务:
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, } }); }]);
我的控制器:
... Category.query(function(data) { console.log(data); }); ...
我想这样或..我不知道如何处理错误,如果我的API不工作..
Category.query().success(function() { console.log('success'); }).error(function() { console.log('error'); });
您可以将error handling程序作为第二个参数进行query
。
Category.query(function(data) {}, function() {});
编辑:
让事情更清楚些,例如:
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 });
您可以在资源的创build步骤中定义一个error handling程序,方法是在方法描述中添加一个interceptor
对象,并使用responseError
属性链接到您的错误函数。
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'} };
其中resourceErrorHandler
是get或query方法每个错误上调用的函数。 对于所问的问题,get方法是唯一需要的。 当然,你可以将其应用于任何行动。
存在$资源的其他拦截器response
来捕获正常响应。
{'get': {method:'GET', interceptor : {response : resourceResponseHandler}},
拦截器是$http
模块的一部分,你可以在他们的文档中进一步阅读它们 。
这是一个新的ES6的例子(我使用TypeScript)在我的ng.resource
resolve: { detail: function (myService, $stateParams) { return myService.getEventDetail({ id: $stateParams.id }).$promise.then(data => data, error => false ); } }
然后在我的控制器中,注入到控制器中的“细节”将parsing为数据(好)或错误,我处理404的显示。
- 如何将filter应用于* ngFor
- angular $ q,如何在for循环之内和之后链接多个promise
- Angular2使用Hashtag路由到页面定位
- 声明,提供者和导入在NgModule之间有什么区别
- OpenCV undistortPoints和triangulatePoint给出了奇怪的结果(立体声)
- 太阳的位置,一天的时间,经度和纬度
- 如何正确地将angular度2(npm)升级到最新版本?
- 当一些调用工作而另一些调用失败时,$ q.all()会发生什么?
- Angular 2 2.0.0-rc.1属性'map'在types'Observable <Response>'上不存在与问题报告不一样