我是ember的新手,并试图了解它是如何工作的。
我已经使用fixturesAdapter定义了一个商店作为适配器(rev 7)。 我已经定义了两个模型:
App.Tag = DS.Model.extend({
name: DS.attr('string'),
item: DS.belongsTo('App.Item')
});
和:
App.Item = DS.Model.extend({
name: DS.attr('string'),
tags: DS.hasMany(App.Tag, { embedded:true }),
})
我还填充了他们相关的灯具,最后还有一个控制器:
App.itemsController = Ember.ArrayController.create({
content: App.store.findAll(App.Item)
});
我在App.Item模型中定义了一个函数:
tagline: function(){
return this.get('tags').toArray().map(function(tag){
return tag.get('name');
}).join(',');
}.property('tags.@each.isLoaded')
以下是相应的jsfiddle:http://jsfiddle.net/K286Q/29/
我的问题是:
答案 0 :(得分:8)
您正在遇到当前版本的ember-data中的一些重大更改。
第一个是,自从ember-data的第6版开始,ID被字符串规范化,并且必须在fixture中表示为字符串。请注意,REST适配器将转换数字/字符串,但夹具适配器不会进行任何转换。这是混淆的常见原因(见the previous question)。
第二个是暂时从ember-data中删除了对嵌入数据对象的支持。我非常确定这个功能将以比支持属性中的{embedded: true}
更好的方式重新引入。 IMO,嵌入更多的是适配器问题,并不真正属于模型的定义。
我调整了你的灯具并让你的例子在这里工作:http://jsfiddle.net/dgeb/zHz4Y/