div avec ng-show, pas de mise à jour après l'appel ajax

Très nouveau pour anguleuses; je suis sûr que je suis absent quelque chose de vraiment évident.

J'ai un formulaire de connexion sur ma page. Ce que je veux c'est avoir la forme cacher après que l'utilisateur se connecte avec succès dans le.

Toute ma page utilise un contrôleur unique.

Voici le code HTML; j'ai enlevé tout, mais les champs de connexion, bien qu'il existe effectivement d'autres contenus à l'intérieur d'un même contrôleur:

<div ng-app="Localizer" ng-controller="StoreListCtrl" ng-init="my_occasion = ''">
    <div ng-show="user_signed_in===false">

        <div class="row"><h1>Have an account?</h1>
            <p>Sign in to quickly access addresses saved to your account</p></div>
            <div class="row">
                <div class="data">
                    <input type="username" ng-model="username" name="username" data-placeholder="Username" />
                </div>
                <div class="data">
                    <input type="password" ng-model="password" name="password" data-placeholder="Password" />
                </div>
                <div class="data"> 
                    <div class="syo-acctSignBtn yButtonTemplate" ng-click="login_user()">Sign In<div class="btnArrow iconPosition"></div></div>
                </div>
        </div>
    </div>
</div>

Lorsque l'utilisateur clique sur le bouton De connexion, une fonction appelée login_user() s'exécute. Cela fonctionne; si je actualiser manuellement la page, je vois que je suis connecté et que la div qui doit être caché est caché. Mais sans actualisation de la page, le div reste visible, même si la variable il s'appuie sur (user_signed_in) est mis à jour.

Voici la login_user fonction dans ma commande, j'ai enlevé beaucoup de choses, y compris à l'avant-champ de fin de validation:

$scope.login_user = function() {
    $.post('/site/ajax/login/do_login', {'username': $scope.username, 'password': $scope.password}, function(data) {
        if (data.success) {
                    $window.user_state.status = $window.user_status_key.STATE_SIGNED_IN;
            $scope.user_signed_in = $window.user_state.status == $window.user_status_key.STATE_SIGNED_IN;
            console.log("user status: " + $window.user_state.status );
                    console.log("user status key: " + $window.user_status_key.STATE_SIGNED_IN);
                    console.log("scope.user_signed_in: " + $scope.user_signed_in);
        } else {
            Modal({
                title: "Could not Login",
                text: data['errMsg'],
                yellow_button: {btn_text: "OK"}
            });
        }
    });

};

C'est le résultat de la console.log lignes:

statut de l'utilisateur: signé en
statut de l'utilisateur de la clé: signé en
la portée.user_signed_in: vrai

Depuis user_signed_in n'est pas égale à false, je m'attends à tout le contenu du formulaire affiché à l'intérieur de la <div ng-show="user_signed_in===false"> div à cacher. Mais il n'a pas (encore une fois, à moins que j'ai actualiser manuellement la page.) Ce qui me manque?

Cela devrait fonctionner, vous pouvez essayer d'utiliser ng-show="!user_signed_in". Pourriez-vous définir un plunker ou jsfiddle montrant le problème.
Avez-vous essayé ng-hide = "user_signed_in" ? Si vous êtes sûr que tout dans votre code est correct, alors il ya une chance que angulaire n'a pas fini de digérer son cycle. essayez d'utiliser $scope.$appliquer() juste avant l'écriture de la console.

OriginalL'auteur EmmyS | 2014-03-13