2016-07-31 12 views
2

angular.module('project_tracker') 
 
     .config(['$locationProvider','$routeProvider','$provide', 
 
      'authProvider','jwtInterceptorProvider','$httpProvider', 
 
      function config($locationProvider, $routeProvider,$provide, 
 
       authProvider,jwtInterceptorProvider,$httpProvider){ 
 
       authProvider.init({ 
 
        domain: 'xxxxxxxxxxxxxx', 
 
        clientID: 'xxxxxxxxxxxxxx' 
 
       }); 
 
       jwtInterceptorProvider.tokenGetter = function($localStorage){ 
 
        return $localStorage.id_token; 
 
       } 
 
       $locationProvider.hashPrefix('!'); 
 
       $routeProvider. 
 
        when('/projects_list',{ 
 
         template: '<project-list></project-list>' 
 
        }). 
 
        when('/building_add',{ 
 
         template: '<building-add></building-add>' 
 
        }). 
 
        when('/project_view/:projectId',{ 
 
         template: '<project-view></project-view>' 
 
        }). 
 
        when('/project_add',{ 
 
         template: '<project-add></project-add>' 
 
        }). 
 
        when('/project_update/:projectId',{ 
 
         template: '<project-update></project-update>' 
 
        }). 
 
        when('/profile', { 
 
         template : '<profile></profile>', 
 
        }) 
 
       function redirect($q,$injector,auth, $localStorage, $location){ 
 
        return { 
 
         reponseError: function(rejection){ 
 
          if(rejection.status === 401){ 
 
           auth.signout(); 
 
           delete $localStorage.profile; 
 
           delete $localStorage.id_token; 
 
           delete $localStorage.projects; 
 
           delete $localStorage.projects; 
 
           delete $localStorage.project_number; 
 
           $location.path('/home');   
 
          } 
 
          return $q.reject(rejection); 
 
         } 
 
        } 
 
       } 
 
       $provide.factory('redirect',redirect);     
 
       $httpProvider.interceptors.push('redirect'); 
 
       $httpProvider.interceptors.push('jwtInterceptor'); 
 
      } 
 
      ]) 
 
     .run(function($rootScope,auth,$localStorage,jwtHelper,$location){ 
 
      $rootScope.$on('$locationChangeStart',function(){ 
 
       var token = $localStorage.id_token; 
 
       if(token){ 
 
        if(!jwtHelper.isTokenExpired(token)){ 
 
         if(!auth.isAuthenticated){ 
 
          auth.authenticate($localStorage.id_token,token); 
 
         } 
 
        } 
 
       } 
 
       else { 
 
        $location.path('/home'); 
 
       } 
 
      }) 
 
     })

Ich verfolge diese tutorials, nachdem ich die Umleitung Funktion dieser Fehler hinzugefügt :

Circular dependency found: auth <- redirect <- $http <- auth 
       http://errors.angularjs.org/1.5.7/$injector/cdep?p0=auth%20%3C-%20redirect%20%3C-%20%24http%20%3C-%20auth 

Ich bin neu und ich verstehe nicht viel davon.

Antwort

4

Sie haben eine zirkuläre Abhängigkeit zwischen $http und Ihrem auth (Service oder Fabrik).

Was Sie tun sollten, ist anstelle von DI direkt die auth, versuchen Sie es mit $injector in Redirect Interceptor.

var auth= $injector.get('auth'); 
Verwandte Themen