2016-11-04 207 views
0

我使用的是angularjs 1.5.8。

我得到这个错误,当我试图取消HTTP请求与角:

$cancelRequest is not a function

我的代码:

app.factory('User', function($resource) { 
    var getUsersResource = $resource(
     '/users', 
     null, 
     {get : {method: 'GET', isArray: true, cancellable: true}} 
    ); 

    return { 
     getUsers : function() { 
      return getUsersResource.get({}, 
       function(data) { 
        ... 
       }, function(error) { 
        ... 
       } 
      ); 
     } 
    }; 
}); 

app.controller('InitController', function($rootScope, User, ...) { 
    ... 
    User.getUsers(); 
    ... 
} 

app.factory('AuthInterceptor', function($q, $location, $injector) { 
    return { 
     responseError: function(response) { 
      if (response.status === 401) { 
       $injector.get('$http').pendingRequests.forEach(
        function (pendingReq) { 
         pendingReq.$cancelRequest(); 
        } 
       ); 
       $location.path('login'); 
      } 
      return $q.reject(response); 
     } 
    }; 
}); 

你知不知道我怎样才能解决这个问题?

感谢

回答

0

的文件表明,$cancelRequest应与资源对象使用。从我的初步审查来看,您在User工厂内正确使用$资源。但是,我不确定你是如何在AuthInterceptor工厂内实施这个的。它看起来并不像你使用User.getUsersSources()。因此,我相信你得到这个错误的原因是因为你没有正确使用$cancelRequestion。话虽如此,你可能忘记了包含代码的其他部分。

理想情况下,解析的$resource对象User.getUserResources()应传递到AuthInteceptor

+0

当我做User.getUsersResource()我得到没有$ cancelRequestion方法 '数组[0] $承诺此对象:d $解析:假 长度:0 __proto__:数组[0]' – Nan

+0

灿你举一个你的解决方案的例子吗? – Nan

+0

我没有一个例子。简单地去掉我从文档中读到的内容:https://docs.angularjs.org/api/ngResource/service/$resource – richdotjs