2014-09-26 82 views
1

我有以下的HTML,然后JS低于我的服务和控制器:角NG-显示不正常

<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隐藏工作正常,但是,NG-显示没有。

Auth.is_authenticated() 
     .success(function(data) { 
      $scope.is_authenticated = data.authenticated; 
     }); 

服务:

return { 
     is_authenticated: function() { 
      return $http.get('/api/users/is_authenticated'); 
     }, 

当我走在它返回的URL的API端点`{ “认证”:真正}

这是什么情况?

编辑:

当我查看开发工具的源好像出于某种原因与<ul的HTML>为ng-show甚至不存在。

这是真的吗?

+0

是不是因为您的服务返回布尔值为String?这意味着值总是真的(非空字符串)? – matys84pl 2014-09-26 07:11:23

回答

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; 
      } 

     }); 
+0

对不起,JSON是{“authenticated”:true} – 2014-09-26 14:43:25

+0

我已经创建[小提琴](http://jsfiddle.net/38ju2g03/)根据您的代码与假服务。看看,我希望这有助于! – Kailash 2014-09-26 17:26:41

0

您可以简单地将该值更改为布尔值并相应地工作。因此,您的控制器代码将如下所示:

Auth.is_authenticated() 
    .success(function(data) { 
     $scope.is_authenticated = (data.authenticated. toLowerCase() === "true"); 
}); 
+0

对不起,JSON是{“authenticated”:true} – 2014-09-26 14:47:35

+0

@BillyAssim:为问题创建一个[plunkr](http://plnkr.co/edit/gB9Z0T07zrmkMNpU8h0h?p=preview)希望它有帮助 – V31 2014-09-29 05:29:56