我刚刚开始使用Ember.js,我在后端使用ember-rails。我遇到的问题是我得到了一个项目列表,但我的模板中没有呈现数据。
router.js.coffee
App.Router.map (match)->
# match('/').to('index')
@resource "stories"
stories_route.js.coffee
App.StoriesRoute = Ember.Route.extend
model: ->
App.Story.find()
stories.handlebars
<h1>Stories</h1>
<ul>
{{#each story in controller}}
<li>{{story.title}} A</li>
{{else}}
<li>There are no stories.</li>
{{/each}}
</ul>
{{outlet}}
以下是我从Rails回来的JSON:
{
"stories":[
{
"story":{
"id":1,
"title":"Test",
"description":"This is a test story"
}
}
]
}
编辑:
我能够获得正确的渲染模板,只是数据是空的。
这是HTML的样子:
<div id="ember295" class="ember-view">
<h1>Stories</h1>
<ul>
<script id="metamorph-2-start" type="text/x-placeholder">
</script>
<script id="metamorph-4-start" type="text/x-placeholder">
</script>
<li>
<script id="metamorph-5-start" type="text/x-placeholder">
</script>
<script id="metamorph-5-end" type="text/x-placeholder">
</script>
A
</li>
<script id="metamorph-4-end" type="text/x-placeholder">
</script>
<script id="metamorph-2-end" type="text/x-placeholder">
</script>
</ul>
<script id="metamorph-3-start" type="text/x-placeholder">
</script>
<script id="metamorph-3-end" type="text/x-placeholder"></script>
</div>
答案 0 :(得分:0)
如果stories
是您的第一条路线并且可以"/"
访问,那么您可以定义如下路径:
App.Router.map () ->
@resource('stories', {path: '/'})
OR 您可以定义索引路由并从那里重定向,如:
App.IndexRoute = Ember.Route.extend
redirect: ->
@transitionTo('stories')
在这里看到一个显示第二个概念的工作jsbin。
修改强>
我想您的问题是,如果您的结果包含一系列记录,则需要删除JSON中的其他story
级别,结果如下:
{
"stories":[
{
"id":1,
"title":"Test",
"description":"This is a test story"
}
]
}
并且对于单个记录,例如您的JSON应该是/stories/123
:
{
"id":1,
"title":"Test",
"description":"This is a test story"
}
希望有所帮助