showLoadingIndicator
アプリ全体にローディングインジケーターのオーバーレイを表示します。リファレンスカウント方式で、ネストした呼び出しも安全に扱えます。
Parameters
timeoutSeconds(number): 自動的に非表示にするまでのタイムアウト(秒)。0を渡すとデフォルトの10秒が適用されます
Returns
なし(void)
Description
lucyNavigator.context(アプリのルートオーバーレイ)にローディングインジケーターを表示します。リファレンスカウント方式で動作します。
showを呼び出すたびに内部カウンター(_indicatorRefCount)が増加します- カウンターが0→1になったときだけ実際にオーバーレイが表示されます
hideを呼び出すたびにカウンターが減少し、0になったときだけ実際に非表示になります
そのため、複数の非同期リクエストがネストする場合でも、show/hideの回数を合わせれば安全に動作します。
$app vs $formの詳細比較
| 区分 | $app.showLoadingIndicator | $form.showLoadingIndicator |
|---|---|---|
| 表示範囲 | アプリ全体(ルートオーバーレイ) | 該当フォームの領域のみ |
| リファレンスカウント | ✅ あり — ネストした呼び出しも安全 | ❌ なし — 即座にshow/hide |
| デフォルトのタイムアウト(0を渡した場合) | 10秒 | 20秒 |
| ネストしたshowのあとにhideを1回 | カウンターが減るだけで、まだ表示中 | すぐに消えます |
$appを使う場面
- アプリ全体をブロックする必要があるとき(ログイン、グローバル初期化など)
- 複数の非同期リクエストがネストし、すべて完了してから非表示にしたいとき
$formを使う場面
- 特定のフォーム領域だけが読み込み中であることを示すとき
- ネストのない単発のリクエスト
Example
// タイムアウトを指定
$app.showLoadingIndicator(5);
$http.get("/api/data", function(res) {
$app.hideLoadingIndicator();
});
// ネストした呼び出しの例(N回showしたらN回hideが必要)
$app.showLoadingIndicator(0); // refCount: 1
$app.showLoadingIndicator(0); // refCount: 2
$app.hideLoadingIndicator(); // refCount: 1、まだ表示中
$app.hideLoadingIndicator(); // refCount: 0、これで非表示
Related
$app.hideLoadingIndicator()— アプリのローディングインジケーターを非表示(リファレンスカウント方式)$app.setUseLoadingIndicator(enabled)— 自動インジケーターのon/off$form.showLoadingIndicator(timeoutSeconds)— フォーム領域のみのローディングインジケーター(カウントなし)