MonacaとAngularJSを使用してクロスプラットフォームアプリケーションを構築しました。私は一般的なビューを表示し、NG-IFとをNG-含むを使用して、いくつかの計算/ルックアップの結果に基づいて、特定のセクションを表示するいくつかの画面でng-ifのクロスプラットフォームアプリでUIを表示するのに遅延があります
。
など。ログイン画面では汎用ビューを表示し、コントローラではユーザーが以前にログインしているかどうかを確認します。このルックアップの結果に応じて、「ようこそ」メッセージが表示されるか、ユーザーにログインを促すメッセージが表示されます。
以下は、一般的なログインビューの省略バージョンです。
<div>
<ons-page>
<ons-scroller >
<!-- Show if user not logged in -->
<div ng-if="!loggedIn">
<div ng-include="'login/login-details.html'"></div>
</div>
<!-- Show if user logged in -->
<div ng-if="loggedIn">
<div ng-include="'login/login-confirmation.html'"></div>
</div>
</ons-scroller>
</ons-page>
</div>
これは正常に動作しているが、が常に表示されている場合、NG-問題が最初ことである - だけでも秒間 - コントローラをチェックしながら、ユーザがログインした後、値を設定している場合loggedinです。したがって、コントローラは、コントローラが変数loggedInにtrueまたはfalseを返すまで、ログインプロンプトを常に表示します。
loggedInのブール値はコントローラで定義されていますが、初期化されていません。ルックアップが完了した後にのみ開始されます。
私は、表示する1知っているまで、どのように表示さからNG-含まの両方を停止することができますか?
私は別の NG-場合を作成することができますが、それは長い息切れや非効率です。
「ng-cloak」が役立つかもしれません。 'ng-if'のように' ng-show'を 'ng-if'と同じ条件で追加していない場合は、 –
あなたのコントローラ/サービスで何が起こっているのかわかりませんが、あなたはおそらく約束をしていません。 –
@Ben Beck - 私は約束をしていません。私は非同期呼び出しを使用して、ユーザーがログインしているかどうかを確認しています。これにより、ルックアップがさらに長くなります。私は服を着て、それがうまくいくのであれば、約束を履行します。 – heyred