我是ember的新手。我得到了框架的基本概念和命名约定等。我正在尝试学习如何进行关系建模,而且文档没有太多帮助。举个例子,我正在构建一个带注释的简单博客应用程序(只是我自己的概念验证)。我想在每个帖子页面上显示评论;但是,当我尝试在{{each}}
块中呈现注释时,我收到一个奇怪的错误。这是相关代码(coffeescript的可读性):
// file: models/post.js
BlogApp.Post = DS.Model.extend
title: DS.attr 'string'
contents: DS.attr 'string'
comments: DS.hasMany 'comment'
BlogApp.Post.FIXTURES = [
{
id: 1,
title: 'My first post',
contents: "Lorem ipsum dolor blah blah blah",
comments: [1, 3]
},
{
id: 2,
title: 'Heating up',
contents: "I'm really getting the hang of this blogging thing.",
comments: [2, 4]
}
]
同样的意见:
// file: models/comment.js
BlogApp.Comment = DS.Model.extend
post: DS.belongsTo 'post'
text: DS.attr 'string'
BlogApp.Comment.FIXTURES = [
{
id: 1,
text: "Haha yes!"
},
{
id: 2,
text: "Alrighty then"
},
{
id: 3,
text: "Eh, I don't agree"
},
{
id: 4,
text: "This is great!"
}
]
路线似乎设置正确。
// file: router.js
BlogApp.Router.map ->
@resource 'posts'
@resource 'post', path: 'post/:post_id', ->
@resource 'comments'
BlogApp.PostsRoute = Ember.Route.extend
model: ->
@store.find 'post'
最后,模板(这是问题发生的地方):
// file: templates/post/index.hbs
<h3>{{title}}</h3>
<p>{{contents}}</p>
<hr>
<h4>Comments</h4>
<ul>
{{#each comments}}
<li>hi</li>
{{/each}}
</ul>
我收到错误Uncaught TypeError: Cannot read property 'resolve' of undefined
。如果我取出每个块,一切都正常,所以我知道它与从数据存储中检索注释的方式或控制器传递它们的方式有关。
如果我看一下ember chrome扩展,我可以在数据选项卡中看到注释,但是“text”属性是未定义的。任何帮助,将不胜感激。我觉得好像我有一小块遗失,但由于我迄今为止对ember的了解有限,我无法弄明白。
谢谢!