gpt4 book ai didi

ember.js - Ember 应用程序不会使用 ActiveModelAdapter 从 has_many 关系加载数据

转载 作者:行者123 更新时间:2023-12-02 06:10:41 27 4
gpt4 key购买 nike

这个应用在 store 是 FixtureAdapter 时可以正常工作,但是当 store 是 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"

最佳答案

您需要为每个被覆盖的模型指定一个自定义适配器并在 Embedded Records 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com