我有一个基于身份验证的登录页面显示/隐藏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没有更新
答案 0 :(得分:2)
您应该像以下一样使用它:
<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。