Ember模板未显示任何数据

时间:2013-06-03 13:31:36

标签: ember.js handlebars.js ember-rails

我刚刚开始使用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>

1 个答案:

答案 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"
}

希望有所帮助