Javascript ng当从控制器更新值时出现问题

Javascript ng当从控制器更新值时出现问题,javascript,html,angularjs,meteor,Javascript,Html,Angularjs,Meteor,我在Meteor中使用AngularJS,我在身份验证方面遇到了麻烦,我使用accounts password包来使用accounts包方法,但实现了我自己的UI 至于现在,我在我的ng.html(视图)文件中有这样的内容: <div ng-if="$auth.currentUser">I am visible only for logged in users! <br> {{ $auth.currentUser.emails }} <


我在Meteor中使用AngularJS,我在身份验证方面遇到了麻烦,我使用accounts password包来使用accounts包方法,但实现了我自己的UI
至于现在,我在我的ng.html(视图)文件中有这样的内容:

<div ng-if="$auth.currentUser">I am visible only for logged in users!

    <br>
    {{ $auth.currentUser.emails }}


    <form>
        <input type = "submit" value = "Logout" ng-click = "logout();">
    </form>

</div>

<div ng-if="!$auth.currentUser">

        <input type="email" name="loginEmail" ng-model = "loginEmail">
        <input type="password" name="loginPassword" ng-model = "loginPassword">
        <input type = "submit" value = "Login" ng-click = "login(loginEmail,loginPassword);" >

</div>
在login函数结束后,$auth.currentUser变量不为null,这没关系,现在我们应该看到另一个div,但是,ng if在发生某些事情之前不会再次检查$auth.currentUser的值,比如我按下两次按钮,或者使用一些网页功能,例如在浏览时更改一些div的样式或属性

所以我的问题是,有没有一种方法可以让ng在某个方法结束后再次检查该值(因为在Register和Logout方法中也会发生这种情况)或者更新了一个变量


感谢您的时间和回答:)

使用密码登录的
方法可以使用第三个参数;回调函数。LoginWithPassword是一种异步方法,因此当服务器返回答案(并触发回调)时,我们需要通知Angularjs发生了什么。在回调函数中调用$scope.$apply()。

您可以像这样使用回调

        Meteor. loginWithPassword(loginEmail, loginPassword, function (err, result) {
            if (err) {
                // TODO: Log error
            } else {
                Meteor.logoutOtherClients(function () {
                    $state.go('your_state_name');   //something like $state.go('home'); 
                });
            }               

            $scope.$apply(function () {
                //you can set any other $scope variables using $scope.$apply
                $scope.isAuthenticating = false;    
            });
        });

我没有使用Meteor,但是对于angular,你可以将ng if绑定到$scope上的属性,当属性发生变化时,它应该可以工作。嗨,Kishor!我刚刚实现了,似乎工作得很好。谢谢lot@JaviAlca尼茨很高兴知道它起作用了。如果它解决了您的问题,请接受它作为答案。:)
        Meteor. loginWithPassword(loginEmail, loginPassword, function (err, result) {
            if (err) {
                // TODO: Log error
            } else {
                Meteor.logoutOtherClients(function () {
                    $state.go('your_state_name');   //something like $state.go('home'); 
                });
            }               

            $scope.$apply(function () {
                //you can set any other $scope variables using $scope.$apply
                $scope.isAuthenticating = false;    
            });
        });