2016-07-07 5 views
1

からエンバーモデルデータにアクセスする方法:私は執拗に適切に私のコントローラでは、このモデルデータにアクセスする方法をGoogleで検索している正しく私はエンバーコントローラで複数のモデルにアクセスするためにEmber.RSVP.hashを使用していますコントローラ

export default Ember.Route.extend({ 
    model() { 
     return Ember.RSVP.hash({ 
      categories: this.store.findAll('category') 
      languages: this.store.findAll('language'), 
      requirementTypes: this.store.findAll('requirement-type') 
     }); 
    }, 

    setupController: function(controller, models) { 
     controller.set('categories', models.categories); 
     controller.set('languages', models.languages); 
     controller.set('requirementTypes', models.requirementTypes); 
    } 
}); 

。私が今までに見つけた唯一の方法はあまりにもハッキリすぎると感じます。私はちょうど私のAPIから返される生のHTTP応答データにアクセスしたいです。

しかし、私はthis.get(「カテゴリ」)を書くとき、私は戻って取得することはかなり醜いですし、私のAPIが返されるものよりもはるかに複雑なオブジェクトである:「

console.log(this.get('categories'))

InternalModel entry details

良く、RECOがあります:InternalModel」のエントリは私のAPIから返された_data属性の実際のデータが含まれています私のAPIから返され、関連付けられたルート経由でコントローラに渡されるこのモデルデータにアクセスする方法は何ですか?私は、私のAPIがthis.get( 'categories')のようなもので返された正確なデータにアクセスし、私のAPIが送信したモデルデータにすぐにアクセスできることを期待していました。

+0

なぜ正確なAPI応答にアクセスしたいのですか?必要なすべてのデータを持つようにモデルを定義することはできませんか? emberストアメソッドを使用して正確な応答にアクセスすることはできません。そのためには、通常のAjaxリクエストを使用する必要があります。 – Igor

+0

Ember Dataを使用してapiリクエストを作成し、そのモデルデータをコントローラに渡しています。私はそれを本当にやっているのですか?それでは、私はEmber Dataのポイントを理解しておらず、手動のHTTPリクエストを使いたいと思っています。 – lkgarrison

+0

'controller.setProperties(models)'を使って3つのプロパティをすべて1回のパスで設定できます。 –

答えて

3

はい、これは正しい方法です。 Emberのデータはemberの永続化レイヤーです。あなたはそれを使用する必要はありません。しかし、それは非常に便利であり、重要な点は、モデルオブジェクトを通してデータにアクセスする良い方法があることです。

モデル結果からコレクションの1つをループすると、データを含むemberレコードが得られます。コントローラーでは次の操作を実行できます。

this.get('categories').forEach(category => { 
    // Do something with category data, i.e. 
    console.log('Category name:', category.get('name')); 
}); 
関連する問題