2016-10-21 2 views
0

Hier ist meine Route config:angular `ui-router` - Wie man aus Zustand leeren Fehler beheben?

$stateProvider 
     .state('login', { 
     url: '/', 
     templateUrl: function(){ 
      return 'app/login/login.html'; 
     }, 
     controller: 'loginCtrl as ctrl', 
     data: { 
      requireLogin: false 
     } 
     }) 
     .state('loginSerial', { 
     url: '/login/createCase?sn=', 
     templateUrl: function(){ 
      return 'app/login/login.html'; 
     }, 
     controller: 'loginCtrl as ctrl', 
     data: { 
      requireLogin: false 
     } 
     }) 

auf $stateChangeStart - Ich Umleitung wie:

if(!$rootScope.isUserLoggedIn && !$rootScope.serialLogin){ 

     console.log('no one is logged in!', toParams.sn); 
     $state.go('/login/createCase',{sn:toParams.sn});; 
     event.preventDefault(); 
     return; 

     } 

Es funktioniert gut. Aber ich bekomme folgende Fehlermeldung:

angular.js:11706 Error: Could not resolve '/login/createCase' from state '' 
    at Object.transitionTo (angular-ui-router.js:3179) 
    at Object.go (angular-ui-router.js:3107) 
    at index.route.js:152 
    at Scope.$broadcast (angular.js:14889) 
    at Object.transitionTo (angular-ui-router.js:3272) 
    at Array.<anonymous> (angular-ui-router.js:2383) 
    at Object.invoke (angular.js:4219) 
    at handleIfMatch (angular-ui-router.js:1868) 
    at angular-ui-router.js:1925 
    at check (angular-ui-router.js:2041) 

Wie löst man das? und was stimmt nicht mit meiner Seite? jemand hilft mir?

Antwort

0

$state.go erfordert, dass Sie einen Statusnamen und keine Status-URL übergeben. So müssen Sie

$state.go('loginSerial', {params}); 
+0

Ja, jetzt ist der Fehler weg. Aber Seite nicht angezeigt, aber bevor ich Login-Seite mit Fehler angezeigt bekam. Irgendetwas muss weiter verfeinert werden? – user2024080

+0

@ user2024080 entferne die '=' in deiner URL für deinen Status '/ login/createCase? Sn =' so dass es '/ login/createCase? Sn' ist. Dies basiert auf der Dokumentation https://github.com/angular-ui/ui-router/wiki/URL-Routing#query-parameters –

1

Sie sollten Zustand Namen übergeben auszuführen, nicht staatliche url

// not this 
$state.go('/login/createCase',{sn:toParams.sn}); 
// but that 
$state.go('loginSerial',{sn:toParams.sn}); 

verlängern, auch vor jeder Umleitung, würde ich dringend überprüfen vorschlagen, wenn wir werden nicht bereits umgeleitet:

if(toState.name === 'loginSerial'){ 
    return; // do not continue in redirection, if already redirected 
} 
+0

Ja, der Fehler ist weg, aber ich bekomme eine leere Seite. – user2024080

+0

Bereit zu helfen, aber Sie sollten mehr zeigen .. HTML-Vorlage .. und noch besser ... einige Plunker. Es gibt einige ähnliche Fragen und Antworten mit Plunkern http://StackOverflow.com/q/26135382/1679310 –

+0

Als Test kann ich meine URL aktualisieren und wie folgt testen: 'http: // localhost: 3000/Login/createCase? Sn = 3000' - – user2024080

Verwandte Themen