2014-04-12 97 views
0

我得到了一個問題。我想在用戶登錄或退出時顯示隱藏Menuitems。AngularJS顯示隱藏元素只在頁面刷新

所以我寫了一個HomeController的: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

定義了'hometController'。它是$ routeProvider定義的一部分嗎?這個值是什麼時候設定的。您可以嘗試使用方法而不是屬性,以便在正確的時間進行評估。有些東西像'scope.UserLoggedIn = function(){return $ window.sessionStorage.getItem('loginToken')!= null;}' – Chandermani

+0

那就是它!非常感謝你 ! – skary

回答

1

您還沒有詳細的關於你的,homeController聲明做,當你設置的變量。

但解決此問題的一種方法是使用函數。類似於

scope.UserLoggedIn = function() { 
    return $window.sessionStorage.getItem('loginToken') != null; 
} 

每次發生摘要循環時都會調用此函數,以便始終獲取正確的值。

+0

它直接在聲明Menu的index.html中的div中 – skary