0

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

故事.车把

<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>
4

1 回答 1

0

如果stories是您的第一条路线并且可以访问,"/"那么您可以定义如下路径:

App.Router.map () ->
  @resource('stories', {path: '/'})

或者您可以定义索引路由并从那里重定向,例如:

App.IndexRoute = Ember.Route.extend
  redirect: ->
    @transitionTo('stories')

请参阅此处显示第二个概念的工作jsbin 。

编辑

我想你的问题是,如果你的结果包含记录的集合,你需要删除storyJSON 中的附加级别,结果如下:

{
  "stories":[
    {
      "id":1,
      "title":"Test",
      "description":"This is a test story"
    }
  ]
}

对于单个记录,例如/stories/123您的 JSON 应如下所示:

{
  "id":1,
  "title":"Test",
  "description":"This is a test story"
}

希望能帮助到你

于 2013-06-03T13:44:53.693 回答