Volt Introduction and Docs

モデルの状態

モデルはクライアント上で動作しますが、クライアントとサーバー間にはレイテンシーが存在しているため、Volt では、モデルがサーバーに同期されているかを確認するためのいくつかの「状態 (state)」メソッドを用意しています。バッファーから保存した場合、.save! が返す Promise はデータがサーバー側に保存されてから解決されます。したがって、以下の状態メソッドは主に、ユーザーに対して状況を知らせるために使います。

保存状態

すべてのストアモデル (もしくはバッファ) に対して、.saved_state を実行することができます。その結果は以下です:

状態 詳細
not_saved モデルはサーバーに保存されていません
saving モデルは保存処理中です
saved モデルはサーバーに保存され、クライアントのデータは最新の状態です

読み込み状態

状態 詳細
not_loaded ArrayModel は読み込まれておらず、読み込むためにモデルに依存しているものもありません (これは Volt の内部状態なので外から見ることはありません)
loading ArrayModel はデータを読み込み中です
loaded データは読み込まれ、サーバーと同期しています
dirty データは読み込まれていますが、サーバーと同期されていません。この状態は、バインディングがデータをリアクティブにリッスンしていない場合や、データが何も発生させない場合に発生します

モデルがロードされているかどうかは、以下のように確認できます。

{{ if todo.load_state == :loading }}
  <p>Loading Todo...</p>
{{ elsif todo.load_state == :loaded }}
  <p>{{ todo.label }}</p>
{{ end }}

また、Volt は読み込み状態が:loaded であるかをチェックするための便利なメソッドを提供しています。

{{ if todo.loaded? }}
  <p>{{ todo.label }}</p>
{{ end }}

モデルの遅延レンダリング

コントローラーで self.model = を Promise と設定した場合、ビューは Promise が解決されるまではレンダリングされないことを覚えておいてください。(詳細は遅延レンダリング for more info)を参照してください。