私は一日中この問題に頭を悩ませており、解決に近づいているように感じますが、それを実現することはできません. 私は Ember-Data と Fixtures アダプターで Ember.js を使用していますが、最終的には REST アダプターに移行します。基本的な問題は次のとおりです。多対多の関係を持つサイトとスーパーバイザーがあります。サイトごとに並べ替えられた、既存のサイト/スーパーバイザーのペアリングの選択ボックスをユーザーに提示したいと考えています。
- サイト 1 - スーパーバイザー 1
 - サイト 1 - スーパーバイザー 2
 - サイト 2 - スーパーバイザー 1 (多対多であることを思い出してください)
 - サイト 2 - スーパーバイザー 3
 
これら 2 つのリソースを、Ember.Select から継承する (または継承する) ビューに渡すことができる 1 つの配列にまとめる必要があります。現在、これらの関係を表すフラット化された配列を返すため、「フラット」と呼んでいるスーパーバイザーコントローラーのメソッドでこれを試みています。コントローラを以下に示します。私は .find().then() を使用して、約束が果たされた後にデータを処理しています。返ってきたデータが表示される4 つすべてのフィクスチャを含めることができますが、列挙可能なメソッド (特に forEach) のいずれかを試すと、最初のオブジェクトのみが返されたかのように動作します。data オブジェクトと data.get('content') を反復処理してみました。私は Ember にまったく慣れていないので、とにかく間違っているのかもしれませんが、とにかくこれは私には非常に奇妙に思えます。これが私のコードです:
App.SupervisorsController = Ember.ArrayController.extend({
  flat: function(){
    return App.Supervisor.find().then(function(data){
      var c = data.get('content') ;
      console.log(c) ;    // <-- logs an object containing four records,
                          //     with attribute "length" showing 4
                          //     Great! (see below for log output)
      console.log(c[0]) ; // <-- logs first record. Great!
      console.log(c[1]) ; // <-- undefined (?!)
      console.log(c[2]) ; // <-- undefined (?!)
      console.log(c[3]) ; // <-- undefined (?!)
      console.log(c.get('length')) ; // <-- 1 (not four?!)
      return c ; // <-- eventually this will return the newly constructed array
    }) ;
  }
}) ;
そして、これが最初の console.log() 呼び出しからのログ出力です
0: Object
1: Object
2: Object
3: Object
__ember1376005434256: "ember325"
__ember1376005434256_meta: Meta
_super: undefined
length: 4
__proto__: Array[0]
ここで何が欠けているか教えてもらえますか? 結果として得られる 4 つのスーパーバイザーのそれぞれにアクセスする方法がわかりません。
ありがとう!