我有以下HTML,然后是我的服务和控制器下面的JS:
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right" ng-show="is_authenticated">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Account <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">Account</a></li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-right" ng-hide="is_authenticated">
<li ng-class="{ active: register }"><a href="#/register">Sign Up</a></li>
<li ng-class="{ active: login }"><a href="#/login">Sign In</a></li>
</ul>
</div>
ng-hide工作正常,但是ng-show没有。
Auth.is_authenticated()
.success(function(data) {
$scope.is_authenticated = data.authenticated;
});
服务:
return {
is_authenticated: function() {
return $http.get('/api/users/is_authenticated');
},
当我转到URL中的API端点时,它返回`{&#34; authenticated&#34;:true}
这是怎么回事?
编辑:
当我在开发者工具中查看源代码时,由于某种原因,似乎带有<ul
&gt;的HTML ng-show
甚至不存在。
这应该是真的吗?
答案 0 :(得分:0)
Change is_authenticated function like :
Auth.is_authenticated()
.success(function(data) {
if(data.authenticated === 'true')
{
$scope.is_authenticated = true;
}
else
{
$scope.is_authenticated = false;
}
});
答案 1 :(得分:0)
您可以简单地将值更改为布尔值并相应地工作。因此,您的控制器代码将如下所示:
Auth.is_authenticated()
.success(function(data) {
$scope.is_authenticated = (data.authenticated. toLowerCase() === "true");
});