我有一个基于身份验证的登录页面,我显示/隐藏一个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 }}
,则其值将为true
或false
。这会尝试在true
内搜索名为false
或$scope
的变量。对ngShow
中的表达式求值的原因是,您可以使用表达式而无需创建单独的变量,或者用于显示元素的逻辑过于复杂:<table class="txt_logged" ng-controller="mainCtrl" ng-show="xyz == 'true' && userdetails">
还要签出:ngShow & ngHide。