0

我有一个带有 ember 的 Rails 应用程序,它呈现一个模板,我想在其中呈现应用程序的笔记列表。

主要模板是:

<div class="container" style="margin-top: 30px">
   ......
        <ul class="nav nav-list">
          <li class="nav-header">list notes</li>
 #ERROR -> {{  view App.NotesListView contentBinding='App.NotesIndexController' }}
        </ul>
      </div>
      {{#linkTo "notes.new"}} <button class="btn btn-primary">Add Note</button>{{/linkTo}}
    </div>
  ......
  </div>
</div>

我有 notes_index_controller:

App.NotesIndexController = Em.ArrayController.extend

  init: ->
    console.log "entra en notes index controller"

  selectedResource: null

  isEmpty:( ->
    @get('length') == 0
  ).property('length')

和 index_route :

App.NotesIndexRoute = Em.Route.extend

  model: ->
    App.Note.find()


  setupController:(controller, model ) ->
    controller.set('content', model )
    controller.set('users', App.User.find() )

当我尝试呈现此视图( App.NotesListView )时:

App.NotesListView = Ember.View.extend

  templateName: "notes/list" 

列表.hbs

{{#each content}}  #I supose that have to be the NotesIndex´s content but not it is
  <li>test</li>
  <li>{{  view App.NoteListItemView contentBinding='this' }}</li>
{{/each}}

我无法将 NotesIndexController (我在其中获取笔记列表)与此视图的内容绑定。

这样做的正确方法是什么?

4

1 回答 1

0

假设您的主模板是index您应该能够App.NotesIndexController通过要求nodesIndex控制器在您的需求 API 中访问您的内容IndexController

JS

App.IndexController = Em.ArrayController.extend
  content: []
  needs: ['notesIndex']
  notesBinding: 'controllers.notesIndex.content'

车把

<script type="text/x-handlebars" id="index">
  ...
  {{view App.NotesListView contentBinding='notes'}}
  ...
</script>

如果您的主模板是application您应该能够做同样的事情,但需要您的notesIndex控制器来ApplicationController代替:

JS

App.ApplicationController = Em.ArrayController.extend
  content: []
  needs: ['notesIndex']
  notesBinding: 'controllers.notesIndex.content'

车把

<script type="text/x-handlebars" id="application">
  ...
  {{view App.NotesListView contentBinding='notes'}}
  ...
</script>

编辑以回应您的最后评论:

setupController尝试将你的钩子重写为NotesIndexRoute

  ...
  setupController:(controller, model) ->
    @_super(controller, model)
    controller.set('users', App.User.find())
  ...

希望能帮助到你。

于 2013-08-12T10:51:54.567 回答