我在我的应用程序中广泛使用渲染控制器,并且无法理解围绕控制器创建的逻辑。
有问题的代码使用这个(缩减的)模板(使用会徽.js):
.span4
render "learningNeeds" # models loaded in learningNeeds controller
.span8
render "notices" student.room.notices # student is defined on the top-level controller
render "observations" # models loaded in observations controller
以及模板路由的 setupController:
App.ParentRoute = Ember.Route.extend
setupController: (controller, model) ->
console.log "ParentRoute setupController"
controller.set('student', model.get('students').objectAt(0))
@set('controller.controllers.observations.showFilters', true) # this works
@set('controller.controllers.learning_needs.showFilters', true) # this works
@set('controller.controllers.notices.showAdd', true) # this doesn't work
App.currentUser = model
我正在设置learning_needs
and的内容observations
控制器的内容,因此我没有将任何模型传递给模板中的渲染调用。
使用通知控制器,我将 student.room.notices 作为第二个参数传递给渲染调用。
现在的问题是,当我在setupController 方法notices
中将模板渲染到该模板时,我看到了不同的控制器。Parent
也就是说,它们有不同的 ember id。控制器在@set('controller.controllers.notices.showAdd', true)
与模板呈现的控制器不同。
如果我student.room.notices
从模板中删除模型并仅使用“渲染”通知,则使用相同的控制器,我可以设置 showAdd 属性并将其显示在模板中。那么问题是它不包含任何模型。
相关文档说渲染视图助手会Get (or generate) the singleton instance of AuthorController
,但对我来说似乎并非如此。
任何人都可以阐明这种行为吗?
谢谢,
马丁