AngularJS仅在页面刷新时显示隐藏元素

时间:2014-04-12 10:52:53

标签: angularjs

我遇到了问题。我希望在用户登录或注销时显示隐藏菜单项。

所以我写了一个家庭控制器:scope.UserLoggedIn = $window.sessionStorage.getItem('loginToken') != null;

在我的Index.html中:

<div class="collapse navbar-collapse" id="top-navbar">
        <ul class="nav navbar-nav">
            <li class="pull-left"><a href="/Home">HOME</a> </li>
            <li class="pull-right" data-ng-show="UserLoggedIn"><a href="/#/Login" data-ng-click="Logout()">LOGOUT</a></li>
            <li class="pull-right" data-ng-hide="UserLoggedIn"><a href="/#/Login">LOGIN</a></li>
            <li class="pull-right" data-ng-hide="UserLoggedIn"><a href="/#/register">REGISTER</a></li>
        </ul>
    </div>

属性设置正确但只有刷新页面时菜单才会消失。当我注销时,我必须刷新页面以呈现新菜单。

我认为,我做错了:/

1 个答案:

答案 0 :(得分:1)

您没有详细说明您的homeController声明以及何时设置变量。

但解决此问题的一种方法是使用函数代替。像

这样的东西
scope.UserLoggedIn = function () { 
   return $window.sessionStorage.getItem('loginToken') != null;
}

每次摘要周期发生时都会调用此函数,因此您将始终获得正确的值。