2017-03-09 1 views

答えて

4

正常なオブジェクトを返すと、モデルフックは約束が再開するのを待たず、すぐに戻ります。

model: function() { 
     return { 
      "first-levels":this.get('store').findAll('student') 
     }; 
    } 

しかし、あなたは以下のようにそれを返す場合の約束を解決するために、そのモデルのフックが待機する、

model: function() { 
    return this.get('store').findAll('student'); 
} 

注:findAllがストアから結果を取得し、すぐにバックグラウンドで返され、それアダプタが再度フェッチしてストアを更新するようにアダプタに要求します。この動作は、this.get('store').findAll('student',{reload:true})を使用して制御できます。詳細はfindAll api guide

+0

を参照してください。どちらの場合も最終的にthis.get( 'store')が返されるため、両方のモデルが似ています。 findAll( 'student'); (例えば、ハンドルバーから呼び出すと、最初のものはmodel.first-levelsとして呼び出され、2番目の呼び出し方法ではモデルに等しい) – Prageeth

+1

このemberガイドの説明を読むhttps://guides.emberjs .com/v2.11.0/routing/specify-a-routes-model/'通常、モデルフックはEmber Dataレコードを返すべきですが、任意の約束オブジェクト(Ember Dataレコードは約束です)オブジェクトまたは配列。 Emberは、テンプレートをレンダリングする前にデータのロードが完了するまで待つ(約束が解決されるまで待つ)。 – kumkanillam

+0

これは単にthis.get( 'store')を呼び出すと意味するのだが、findAll( 'student')は常に実際には非同期呼び出しがバックグラウンドで実行されますが、そのデータフェッチが完了するまで(約束が解決されるまで)、テンプレートはレンダリングされません。 – Prageeth

関連する問題