我正在使用 ember-data 的设备适配器加载 App.Structure 对象。这些对象嵌入了 App.Overlay 对象作为hasMany
关系,如下所示:
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 的回复之后,我更新了小提琴。现在第一个叠加层仍然只是一个空壳,但任何后续叠加层都不是。嗯?