2016-10-25 3 views
0

Wenn der Benutzer sich nicht anmeldet, möchte ich verhindern, dass die Änderung angezeigt wird. Ich benutze unten Code und gut funktionieren.angular prevent state change Benutzer nicht eingeloggt

aber diesen Fehler anzeigen!

angular.js:12783 RangeError: Maximum call stack size exceeded 
at Array.indexOf (native) 
at indexOf (http://localhost:9000/bower_components/angular-ui-router/release/angular-ui-router.js:87:18) 
at http://localhost:9000/bower_components/angular-ui-router/release/angular-ui-router.js:1708:46 
at forEach (http://localhost:9000/bower_components/angular/angular.js:341:20) 
at http://localhost:9000/bower_components/angular-ui-router/release/angular-ui-router.js:1707:9 
at forEach (http://localhost:9000/bower_components/angular/angular.js:341:20) 
at Object.$$keys (http://localhost:9000/bower_components/angular-ui-router/release/angular-ui-router.js:1706:7) 
at Object.$$validate [as $$validates] (http://localhost:9000/bower_components/angular-ui-router/release/angular-ui-router.js:1729:23) 
at Object.transitionTo (http://localhost:9000/bower_components/angular-ui-router/release/angular-ui-router.js:3184:27) 
at http://localhost:9000/scripts/app.js:114:24 

kann mir jemand helfen?

Antwort

0

Können Sie das bitte versuchen? und lass mich wissen.

angular.module('app', [...]) 
     .config(function(){}) 
     .run(function($rootscope,$auth,$state){ 

     $rootScope.$on("$stateChangeStart", function(event){ 
     var user = $auth.getToken(); 
     if (user === undefined){ 
      // User isn’t authenticated 
      $state.transitionTo("index"); 
      event.preventDefault(); 
     } 
     }); 

     }) 
1

Ihre stateChangeStart-Funktion erstellt eine Schleife, und deshalb erhalten Sie einen Fehler. Bedenken Sie:

  1. Zustandswechsel beginnt
  2. Benutzer nicht
  3. Staat gehen zu 'index' authentifiziert ist
  4. Zustandswechsel beginnt
  5. Benutzer nicht
  6. Staat gehen zu 'index' authentifiziert

Sie könnten mit einer Variablen für den Status versuchen, die nur für authentifiziert ist Benutzer, zum Beispiel:

$rootScope.$on("$stateChangeStart", function(event, toState){ 
    if (toState.auth) { 
     var user = $auth.getToken(); 

     if (!user) { 
     // User isn’t authenticated 
     event.preventDefault(); 
     $state.transitionTo("index"); 
    } 
    } 
    }); 
+0

immer zurück wahr? !!!!! –

Verwandte Themen