Angular ng-show无法正常工作

时间:2014-09-26 06:50:19

标签: javascript angularjs

我有以下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甚至不存在。

这应该是真的吗?

2 个答案:

答案 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");
 });