Angularjs 如何从ngResource$resource查询中获取错误响应

Angularjs 如何从ngResource$resource查询中获取错误响应,angularjs,angular-services,ngresource,angular-controller,Angularjs,Angular Services,Ngresource,Angular Controller,大家好,我正在做我的第一个angular项目,我遇到了这个问题,因为我无法看到我在一个控制器中使用的服务的值 此外,characterService.query()也很好,只是没有显示errorMessage的值 谢谢你的帮助 服务: angular.module('characterResource',['ngResource']) .factory('characterService',['$resource',function($resource){ var self = this;

大家好,我正在做我的第一个angular项目,我遇到了这个问题,因为我无法看到我在一个控制器中使用的服务的值

此外,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();

}]);

不需要使用错误拦截器。要从
ngResource
查询中获取错误响应,请在其
$promise
属性上使用
.catch
方法

self.getCharacters = function(){
    self.characters = characterService.query();
    self.characters.$promise.catch( function(errorResponse) {
        console.log(errorResponse);
        self.errorMessage = true;
    });     
}
从文档中:

资源实例和集合具有以下附加属性:

  • $promise
    :创建此实例或集合的原始服务器交互的承诺
成功后,将使用相同的资源实例或集合对象解析承诺,并使用来自服务器的数据进行更新。这使得在中很容易使用,以便在加载资源之前延迟视图渲染

失败时,承诺将与对象一起被拒绝,而不包含资源属性

self.getCharacters = function(){
    self.characters = characterService.query();
    self.characters.$promise.catch( function(errorResponse) {
        console.log(errorResponse);
        self.errorMessage = true;
    });     
}

--无需使用错误拦截器。要从
ngResource
查询中获取错误响应,请在其
$promise
属性上使用
.catch
方法

self.getCharacters = function(){
    self.characters = characterService.query();
    self.characters.$promise.catch( function(errorResponse) {
        console.log(errorResponse);
        self.errorMessage = true;
    });     
}
从文档中:

资源实例和集合具有以下附加属性:

  • $promise
    :创建此实例或集合的原始服务器交互的承诺
成功后,将使用相同的资源实例或集合对象解析承诺,并使用来自服务器的数据进行更新。这使得在中很容易使用,以便在加载资源之前延迟视图渲染

失败时,承诺将与对象一起被拒绝,而不包含资源属性

self.getCharacters = function(){
    self.characters = characterService.query();
    self.characters.$promise.catch( function(errorResponse) {
        console.log(errorResponse);
        self.errorMessage = true;
    });     
}

--

创建一个Plunk以复制问题,同时添加视图代码创建Plunk以复制问题,同时添加视图代码