在Ember中,我有一个模型,它包含嵌入的子对象,包括belongsTo和hasMany。我使用Ember Data支持Rails API,并使用Active Model Serializer。设置对象是 -
Application.Release = DS.Model.extend({
title: DS.attr(),
...
label: DS.belongsTo('label'),
artists: DS.hasMany('artist')
});
Application.ReleaseSerializer = DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
label: { embedded: 'always' },
artists: { embedded: 'always' }
}
});
Application.Label = DS.Model.extend({
name: DS.attr(),
release: DS.belongsTo('release')
});
Application.Artist = DS.Model.extend({
name: DS.attr(),
release: DS.belongsTo('release')
});
这就是所有人都能找到并全面开展工作。
我的问题出现在发布索引上,列出了所有版本。当在多个版本上使用艺术家或标签时,它仅包含在所有版本的最后一个版本中,而在之前的对象中缺失。例如 -
Title Artist Label
Release 1 Artist 1 Label 1
Release 2
Release 3 Artist 2 Label 2
版本2的JSON按预期包含Artist 2和Label 2,但在Ember对象中缺少。
我是否遗漏了关于Ember如何看待这些物品的重要信息?如何确保它们包含在每个对象中,如JSON中所反映的那样?
答案 0 :(得分:1)
这是因为您的artist
无法发布许多版本。你应该改变
Application.Artist = DS.Model.extend({
name: DS.attr(),
release: DS.belongsTo('release')
});
到
Application.Artist = DS.Model.extend({
name: DS.attr(),
release: DS.hasMany('release')
});
与label