1

私はこれに数時間携わっており、これを機能させるためにさまざまな組み合わせをいじっています。

LO.List = DS.Model.extend({
  name: DS.attr('string'),
  listItems: DS.hasMany('LO.ListItem', { embedded: true })
});

var lists = LO.store.findAll(LO.List),
    firstList = lists.objectAt(0),
    listItems = firstList.get('listItems'),
    firstListItemId = listItems.objectAt(0).get('id');

console.log(firstListItemId) // [object Object]

http://jsfiddle.net/pjmorse/65eRS/

'embedded'オプションがまったく機能していないようです(ソースにもそのレコードが見つからないようですが、ドキュメントにはそれを使用するように記載されています)。ここで使用する正しいオプションを見つけることができませんでした(またはそれがまったく機能しているかどうか)。これを機能させるためにどこを見ることができるか知っている人はいますか?

助けてくれてありがとう!

4

3 に答える 3

2

Ember-data (バージョン 8) は、埋め込まれた関連オブジェクトの読み込みをサポートしています。「マップ」関数を呼び出して、埋め込みデータをロードするようにアダプターのシリアライザーを構成する必要があります。これは、例えばシリアライザーの「init」で次のように行うことができます。

LO.Serializer = DS.Serializer.extend({
    init: function(){
      this._super();
      this.map(LO.List, {
        listItems: {
          embedded: 'load'
        }
      });
    }
});

ここで、フィドルの実用的な適応を見つけることができます。

于 2012-11-29T13:55:53.980 に答える
1

Emberはデータを非同期的に返しますが、コードが示すように同期的には返しません。これは、変数「リスト」が更新されるのは、データが永続層からフェッチされた場合のみであることを意味します。

解決策:バインディング。これは、やりたいことに応じてさまざまな方法で機能します。たとえば、変数「list」を、ビューにファネルするコントローラー変数にバインドできます。さらに詳しい説明が必要な場合はお知らせください。

于 2012-11-24T12:47:19.097 に答える
1

Ember-data は埋め込みデータのサポートを削除しました。これは一時的なものであるとほぼ確信しており、アダプターの問題としてライブラリに戻す必要があると言えます。

それまでの間、読み取り専用の組み込みアソシエーションの応急処置として、私が作成したかなり醜いhasManyEmbedded shimを自由に使用してください。

listItems: DS.hasManyEmbedded('LO.ListItem')

これは、この shim を使用するフィドルのフォークです。

于 2012-11-24T14:39:09.860 に答える