我想根據用戶是否通過身份驗證來顯示/隱藏HTML中的元素。我的HTML是靜態的,當存在名爲session
的cookie時,檢查由Ajax GET /check
完成。以下作品:AngujarJS async「authenticated」check
HTML:
<div class="ng-cloak" ng-show="loggedIn()">Foo</div>
<div class="ng-cloak" ng-hide="loggedIn()">Bar</div>
的CoffeeScript:
angular.module('app', ['ngCookies']).run ($cookies, $http, $rootScope) ->
if $cookies.session
$http.get('/check').success (data) -> $rootScope.user = data
$rootScope.loggedIn = ->
if $rootScope.user then true else false
的問題是,當用戶通過驗證後(user
不爲空因此loggedIn()
是真實的),有一個短週期,其中Bar仍然顯示,因爲腳本仍在等待GET /check
返回(因此user
仍爲空,因此loggedIn()
爲false)。我該如何解決?
UPDATE:小提琴:http://jsfiddle.net/dexrN/1/(除去$cookies
和更換$http
與$timeout
)
你能建立一個小提琴或普拉克?我不確定它爲什麼會同時顯示,但我有一種感覺,我們錯過了一些東西。 (注意,你不需要使用loggedIn()函數,你可以使用ng-show =「user」或ng-hide =「user」,但這不是什麼大問題。) –
@blesh我已經更新了問題與小提琴。 – wiradikusuma