在我的第一个角度项目工作中,我遇到了这个问题而无法在我的一个控制器中看到使用该服务的值。
另外,characterService.query()很好,只是errorMessage的值没有显示
感谢您的帮助
服务:
angular.module('characterResource',['ngResource'])
.factory('characterService',['$resource',function($resource){
var self = this;
self.errorMessage = false;
return $resource('http://gateway.marvel.com:80/v1/public/characters?limit=90&apikey=APIKEY',null, {
query: {
method: 'GET',
isArray: false,
transformResponse: function(data) {
return angular.fromJson(data).data;
},
interceptor:{
responseError:function(error){
console.log(error);
self.errorMessage = true;
}
}
}
});
}]);
控制器:
angular.module('CharactersCtrl', []).controller('CharactersController',['characterService', function(characterService) {
var self = this;
self.sortType = 'name'; // set the default sort type
self.sortReverse = false; // set the default sort order
//self.search = ' '; // set the default search/filter term
self.errorMessage = characterService.errorMessage;
console.log(characterService.errorMessage);
self.init = function(){
self.getCharacters();
}
self.getCharacters = function(){
self.characters = characterService.query();
}
self.init();
}]);
答案 0 :(得分:0)
无需使用错误拦截器。要从ngResource
查询中获取错误响应,请在其.catch
属性上使用$promise
方法。
self.getCharacters = function(){
self.characters = characterService.query();
self.characters.$promise.catch( function(errorResponse) {
console.log(errorResponse);
self.errorMessage = true;
});
}
来自文档:
资源实例和集合具有以下附加属性:
$promise
:创建此实例或集合的原始服务器交互的承诺。成功时,使用相同的资源实例或集合对象解析promise,并使用来自服务器的数据进行更新。这使得在resolve section of $routeProvider.when()中使用它很容易推迟视图渲染,直到资源被加载。
失败时,使用http response对象拒绝承诺,但没有资源属性。