当存储为 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')
});
Handlebars 模板要求:
{{name}}
{{#each comments}}
{{text}}
{{/each}}
名称出现,注释不出现。 在 ember 开发者控制台中,评论根本没有被加载。
服务器似乎正确地提供了序列化内容(据我所知)。它看起来像这样:
{"post":{"id":1,"name":"Title","description":"Lorem Ipsum","comments":[{"id":1, "text": "commentary here"}]}}
有谁知道为什么这不起作用以及如何解决它?我已经为此苦苦挣扎了几个小时,但无法弄清楚为什么它不起作用。非常感谢您提供的任何见解。
我将其用作 Rails 项目的一部分,这些是相关的 gem:
gem 'ember-rails'
gem 'ember-source', '1.3.0'
gem 'ember-data-source', '~> 1.0.0.beta.6'
gem "active_model_serializers"
最佳答案
您需要为每个覆盖模型指定一个自定义适配器并混合嵌入的记录 Mixin:
App.PostSerializer = DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
comments: {embedded: 'always'}
}
});
请参阅 Ember-Data 源代码中的注释以获取更多信息。
关于ember.js - Ember 应用程序不会使用 ActiveModelAdapter 从 has_many 关系加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21533828/