我有一个带有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"
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(我获取注释列表)。
这样做的正确方法是什么?
答案 0 :(得分:0)
假设您的主要模板为index
,您应该可以通过App.NotesIndexController
nodesIndex
中需要API的IndexController
控制器来访问您的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
上的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())
...
钩子重写为:
{{1}}
希望它有所帮助。