Service de variables qui ne sont pas mise à jour dans le contrôleur

J'ai un NavbarCtrl qui est en dehors de ng-view. J'ai une connexion contrôleur qui parle à un service pour obtenir un utilisateur connecté. Une fois que l'utilisateur est connecté, je veux que la barre de navigation pour mettre à jour avec l'adresse email de l'utilisateur. Cependant, pour la vie de moi, je n'arrive pas à obtenir la barre de navigation de la portée de la mise à jour avec les données chargées dans mon "Auth" service une fois que l'utilisateur est connecté.

C'est ma principale index.html:

<div class="navbar navbar-inverse navbar-fixed-top">

        <div class="navbar-inner">
            <div class="container">
                <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </a>
                <a class="brand" href="#">Brim</a>

                <div class="pull-right"  ng-controller="NavbarCtrl">
                    <div ng-click="refresh()">hello</div>
                    {{ user.email }}
                </div>
            </div>
        </div>

    </div>

    <div class="container" ng-view>

Et mon service:

.factory('Auth', function($resource) {
    var authenticated = false;
    var user = {};
    return {
        isAuthenticated: function () {
            return authenticated;
        },
        getUser: function() {
            return user;
        },
        login: function(loginUser, callback) {
            user =  {email:'[email protected]'}
            authenticated = true;
            callback(true);
            //actual code for logging in taken out for brevity
        }
    }
})

Et mon Login et Navbar contrôleurs:

function LoginCtrl($scope, $location, Auth) {

$scope.login = function() {
    Auth.login($scope.user, function(success) {
        if(success) $location.path('/dashboard');
        //console.log(Auth.getUser())
    });
}

}

function NavbarCtrl($scope, Auth)  {

//thought this should work
$scope.user = Auth.getUser();

//experimenting unsuccessfully with $watch
$scope.$watch(Auth.isAuthenticated(),function () {
    $scope.user = Auth.getUser()
})

//clicking on a refresh button is the only way I can get this to work
$scope.refresh = function() {
    $scope.user = Auth.getUser()
}
}

De ma recherche, j'aurais pensé que $champ d'application.utilisateur = Auth.getUser(); mais il n'est pas et je suis à une perte complète de la façon dont comment je peux obtenir ma barre de navigation mis à jour lorsqu'un utilisateur est connecté. Merci d'avance pour toute aide.

  • Un peu hors-sujet, mais n'auriez-vous pas aussi de perdre la trace de l'utilisateur authentifié sur l'actualisation? Avez-vous éventuellement élargir cette pour utiliser le stockage de session?
  • Oui, j'ai fait des expériences avec le stockage de session pour garder une trace de l'utilisateur authentifié. Je suis tombé sur github.com/grevory/angular-local-storage