ユーザーが認証されているかどうかに応じて、HTML の要素を表示/非表示にしたい。私の HTML は静的です。チェックは Ajax によって行われGET /check
ますsession
。以下の作品:
HTML:
<div class="ng-cloak" ng-show="loggedIn()">Foo</div>
<div class="ng-cloak" ng-hide="loggedIn()">Bar</div>
コーヒースクリプト:
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
null ではないためloggedIn()
true である)、バーがまだ表示される短い期間があることです。これは、スクリプトがまだGET /check
返されるのを待っているためuser
です (したがって、まだ nullであり、 loggedIn()
false です)。これを修正するにはどうすればよいですか?
更新:フィドル: http://jsfiddle.net/dexrN/1/ (削除され$cookies
、に置き換えられ$http
ました$timeout
)