这个应用程序在商店是FixtureAdapter时工作正常,但是当商店是ActiveModelAdapter时不会加载has_many关系。
路线是这样的:
App.IndexRoute = Ember.Route.extend({
model: function(){
return this.store.find('post', 1 )
}
});
模型是这样的:
App.Post = DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
comments: DS.hasMany('comments', {embedded: 'always'})
});
App.Comment = DS.Model.extend({
text: DS.attr('string'),
post: DS.belongsTo('post')
});
把手模板要求:
{{name}}
{{#each comments}}
{{text}}
{{/each}}
显示名称,评论不显示。 在ember开发人员控制台中,评论根本没有加载。
服务器似乎正确地提供了序列化内容(据我所知)。它看起来像这样:
{"post":{"id":1,"name":"Title","description":"Lorem Ipsum","comments":[{"id":1, "text": "commentary here"}]}}
有谁知道为什么这不起作用以及我如何解决它?我一直在努力工作几个小时,无法弄清楚为什么它不起作用。非常感谢您提供的任何见解。
我正在使用它作为Rails项目的一部分,这些是相关的宝石:
gem 'ember-rails'
gem 'ember-source', '1.3.0'
gem 'ember-data-source', '~> 1.0.0.beta.6'
gem "active_model_serializers"
答案 0 :(得分:2)
您需要为每个over-riden模型指定一个自定义适配器并混合使用Embedded Records Mixin:
App.PostSerializer = DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
comments: {embedded: 'always'}
}
});
有关详细信息,请参阅Ember-Data源代码中的注释。