我试图围绕ember.js。
我有两个模型,录制和评论(想象一个经典的帖子和评论示例)。
我正在做的是在一个页面上显示所有录音,以及每个录音的所有评论。每个录音旁边都有一个输入框,用于为该录音创建新评论。
现在,一切似乎都运转正常。我可以添加评论,并将其动态添加到该录制的评论列表中。但是当我刷新页面时,不显示注释,只显示记录。
我使用嵌套的{{#each}}循环显示评论,但由于它在动态添加评论时工作正常,我不确定是否会这样做。这个问题。
这里有一个(更新的)JSBin: http://emberjs.jsbin.com/worulexe/12/edit
的更新 的
所以,我已经发现记录模型的关系(评论)不会在加载时填充。那是为什么?
// The models are loaded like this in the IndexRoute
this.store.find('recording'); // <- this loads all the record models, but doesn't set the "comments" relations.
服务器返回
{
"comments": [{"id":1,"text":"Invisible when page loaded","recording_id":1}],
"recordings":[
{"id":1,"filename":"rec-01.mp3","comment_ids":[1]},
{"id":2,"filename":"rec-02.mp3","comment_ids":[]}
]
}
第一条记录应该有一条评论,但是没有加载?
答案 0 :(得分:0)
您的JSBin中包含以下代码。
// Default index route
App.Route = Ember.Route.extend({
...
});
这不会声明index
路由的路由,该路由声明所有生成的路由继承的路由。由于您没有声明任何路由,因此所有路由都会从中继承,并且所有路由将具有相同的模型。请改用App.IndexRoute
。
这让我想到了第二点。您的ApplicationController
从ArrayController
延伸,因此它所期望的模型是某种类型的数组。但由于上述原因,您的模型实际上是一个对象,这就是您的each
循环未执行的原因。
如果您修复了这些问题并更新了JSBin,我们可以帮助您解决嵌套each
循环的根问题(如果它仍然存在问题)。
答案 1 :(得分:0)
事实证明,如果您使用&#34; active_model_serializers&#34; Gem for Rails(ActiveModel :: Serializers)你需要使用Ember&#39; s App.ApplicationAdapter = DS.ActiveModelAdapter.extend()和 App.ApplicationSerializer = DS.ActiveModelSerializer.extend()
Ember是一个很棒的项目,但它的文档让我完全疯了。