2016-11-04 5 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 следует использовать с объектом ресурсов. Из моего первоначального обзора кажется, что вы правильно используете $ resource на заводе User. Но я не уверен, как вы реализуете это на фабрике AuthInterceptor. Не похоже, что вы используете User.getUsersSources(). Поэтому я считаю, что причина в том, что вы получаете эту ошибку, потому что вы не используете $cancelRequestion правильно. При этом вы, возможно, забыли включить другие части кода.

В идеале разрешенный $resource объект от User.getUserResources() должен быть передан в AuthInteceptor.

+0

Когда я User.getUsersResource() я получаю этот объект не $ метода cancelRequestion 'Array [0] $ обещания: г $ постановили: ложная длина: 0 __proto__: Array [0]' – Nan

+0

Может вы приводите пример своего решения, пожалуйста? – Nan

+0

У меня нет примера. Просто снимите то, что я прочитал из документации: https://docs.angularjs.org/api/ngResource/service/$resource – richdotjs

Смежные вопросы