7

我是 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/

我的问题是:

  • 我究竟做错了什么?
  • 为什么它会看到与第一项关联的多个标签,但无法获取它们的名称?
4

1 回答 1

8

您在当前版本的 ember-data 中遇到了一些重大更改。

第一个是,自 ember-data 修订版 6 以来,ID 是字符串规范化的,并且必须在夹具中表示为字符串。请注意,REST 适配器将转换数字/字符串,但夹具适配器不进行任何转换。这是一个常见的混淆来源(参见上一个问题)。

第二个是对嵌入数据对象的支持已暂时从 ember-data 中删除。{embedded: true}我很确定会以比在属性中支持更好的方式重新引入此功能。IMO,嵌入更多的是适配器问题,并不真正属于模型的定义。

我调整了你的固定装置,让你的例子在这里工作:http: //jsfiddle.net/dgeb/zHz4Y/

于 2012-11-09T03:04:11.823 回答