2016-07-01 11 views
-1

角度$rootScopeを使用して、ユーザーがログインしているかどうかを表示するために2つの変数を設定します。

私が持っている二つの機能私は

<div class="inline-divs" style="float: right" ng-show="isLoggedIn == true"> 
    <div class="inline-divs"><a>{{username}}</a></div> 
    <div class="inline-divs"><a href="#" ng-click="logout()">Logout</a></div> 
</div> 

私が今持っている問題のようなものがdivは、私がログインしたときに表示されていることである持っている私のHTMLで

login() { 
    $rootScope.isLoggedIn = true; 
    $rootScope.username = response.principal.username; 
} 

logout() { 
    $rootScope.isLoggedIn = false; 
    $rootScope.username = ""; 
} 

しかし、私がログアウトボタン(logout() functioを呼び出す)をクリックするとn)、それは再びdivを隠すと思われますが、うまくいきません。 divは引き続き表示されます。私は正常に実行されたログアウトに他のステートメントがありますが、なぜ$rootScope.isLoggedInをfalseに設定し、divを隠蔽しないのかわかりません。

<div class="inline-divs" style="float: right" ng-show="isLoggedIn"> 

私が間違って

+0

問題を示すフィドルを作成できますか? –

+0

'{{isLoggedIn}}'を使って 'isLoggedIn'変数をページのどこかに印刷してみましたか?本当に変化しているかどうか確認できましたか? – thepio

+1

はここでうまくいく:https://jsfiddle.net/jjro9cnk/ – devqon

答えて

0

変更にこれらの行を何をやっている

<div class="inline-divs" style="float: right" ng-show="isLoggedIn == true"> 

isLoggedInの値をチェックする必要はありません。 true/falseのように直接式に割り当てることができます。

よろしくお願いいたします。ログインする前ウルコントローラで

+0

しかし、それは彼の問題を解決しない。 – devqon

+0

それでは、私は@Eddyからいくつかのフィドルが期待できるだろう。 –

0

HTML

<div class="inline-divs" style="float: right" ng-show="isLoggedIn"> 

と機能をログアウトこの

$rootScope.isLoggedIn = false; 

を追加し、uができるように、値をprintig一度ウルhtmlページでご確認ください$ rootScope.isLoggedInで何が起こっているのか

<pre>{{isLoggedIn}}</pre> 
0

私はhtmlのrootScooeで面白い振る舞いをしましたが、変数の前に$root.を追加してみてください:

ng-show="$root.isLoggedIn"また、明示的に真をチェックする必要もありません。

関連する問題