我有一个基于身份验证的登录页面,我显示/隐藏一个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不更新

最佳答案

您应该像这样使用它:

<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

08-28 10:28