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.