ember-dataのフィクスチャアダプタを使用してApp.Structureオブジェクトをロードしています。hasMany
これらのオブジェクトには、次のように、関係としてApp.Overlayオブジェクトが埋め込まれています。
App.Structure = DS.Model.extend({
name: DS.attr('string'),
// hash of overlay paths
overlays: DS.hasMany('App.Overlay', { embedded: true }),
});
App.Overlay = DS.Model.extend({
view: DS.attr('string'),
path: DS.attr('string')
});
App.Overlay.FIXTURES = [];
App.Structure.FIXTURES = [{
"id": 0,
"name": "Test Structure",
"overlays": [{
"view": "Isometric",
"path": "[elided to save space]"
}],
}];
(空のフィクスチャ配列はこの問題を修正するためのものであることに注意してください。)
これで、をロードできますがApp.Structure
、そこから何も取得できません。このjsfiddleを参照してください; 構造体にアクセスでき、配列を反復処理できますoverlays
が、配列内のオブジェクトは中空のシェルであり、何も含まれていません。
これがコンソールセッションの選択です。
> currStructure = App.fixtureStore.findAll(App.Structure).get('firstObject');
Class
> currStructure.get('name');
"Test Structure"
> currStructure.get('overlays').get('length');
1
> var overlay = currStructure.get('overlays').get('firstObject');
undefined
> overlay instanceof App.Overlay;
true
> overlay.get('view');
null
> overlay.get('path');
null
なぜこれが機能しないのですか?
ETA:@Kristapsの応答に続いて、フィドルを更新しました。現在、最初のオーバーレイはまだ中空のシェルですが、後続のオーバーレイはそうではありません。は?