496 Stimmen

Umleitung zu einer bestimmten Route aufgrund einer Bedingung

Ich schreibe eine kleine AngularJS-Anwendung, die eine Login-Ansicht und eine Hauptansicht hat, wie so konfiguriert:

$routeProvider
 .when('/main' , {templateUrl: 'partials/main.html',  controller: MainController})
 .when('/login', {templateUrl: 'partials/login.html', controller: LoginController})
 .otherwise({redirectTo: '/login'});

Mein LoginController prüft die Kombination aus Benutzer und Passwort und setzt eine Eigenschaft auf $rootScope, die dies widerspiegelt:

function LoginController($scope, $location, $rootScope) {
 $scope.attemptLogin = function() {
   if ( $scope.username == $scope.password ) { // test
        $rootScope.loggedUser = $scope.username;
        $location.path( "/main" );
    } else {
        $scope.loginError = "Invalid user/pass.";
    }
}

Alles funktioniert, aber wenn ich auf http://localhost/#/main Am Ende umgehe ich den Anmeldebildschirm. Ich wollte etwas schreiben wie "wenn die Route sich ändert, wenn $rootScope.loggedUser null ist, dann zu /login umleiten".

...

... warte. Kann ich die Routenänderungen irgendwie abhören? Ich werde diese Frage trotzdem stellen und weiter suchen.

-4voto

Dixit Hasija Punkte 1
    $routeProvider
 .when('/main' , {templateUrl: 'partials/main.html',  controller: MainController})
 .when('/login', {templateUrl: 'partials/login.html', controller: LoginController}).
 .when('/login', {templateUrl: 'partials/index.html', controller: IndexController})
 .otherwise({redirectTo: '/index'});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X