ng-show未正确更新

时间:2014-09-01 07:24:06

标签: javascript jquery angularjs

我有一个基于身份验证的登录页面显示/隐藏div。 Div使用$ scope.userdetails显示或隐藏。

<table class="txt_logged" ng-controller="mainCtrl" ng-show="{{userdetails}}">

以下是带监视方法的控制器

.controller('mainCtrl',['$scope','SharedService',function($scope,SharedService)
{
    $scope.userdetails=SharedService.getUserDetails();

    $scope.$watch(function(){ return SharedService.getUserDetails()}, function(newValue, oldValue) 
    {
        if (newValue && newValue !== oldValue) 
        {
            var t= SharedService.getUserDetails();
            if(t.toString()=="true")
            {
                $scope.userdetails =true;
            }
            else
            {
                $scope.userdetails =false;
            }

        }
    });

 }]);

为什么ng-show没有更新

1 个答案:

答案 0 :(得分:2)

您应该像以下一样使用它:

<table class="txt_logged" ng-controller="mainCtrl" ng-show="userdetails">

ngShow评估属性中的表达式。如果您输入值{{ userdetails }},则会评估为truefalse。这会尝试在true内搜索名为false$scope的变量。评估ngShow中的表达式的原因是,您可以在不创建单独变量的情况下使用表达式,或者显示元素的逻辑过于复杂:

<table class="txt_logged" ng-controller="mainCtrl" ng-show="xyz == 'true' && userdetails">

另请查看:ngShow & ngHide