【问题标题】:render helper and Controller instantiation渲染助手和控制器实例化
【发布时间】:2013-08-31 17:01:03
【问题描述】:

我在我的应用中广泛使用渲染控制器,但无法理解控制器创建的逻辑。

有问题的代码使用这个(缩减的)模板(使用会徽.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_needsobservations 控制器的内容,因此我没有将任何模型传递给模板中的渲染调用。

使用通知控制器,我将 student.room.notices 作为第二个参数传递给渲染调用。

现在的问题是,当我在 Parent setupController 方法中将模板渲染为模板时,我看到了不同的 notices 控制器。也就是说,它们有不同的 ember id。 @set('controller.controllers.notices.showAdd', true) 的控制器与模板渲染的控制器不同。

如果我从模板中删除 student.room.notices 模型并仅使用 `render "notices" 则使用相同的控制器,我可以设置 showAdd 属性并将其显示在模板中。那么问题是它不包含任何模型。

相关的docs 说渲染视图助手将Get (or generate) the singleton instance of AuthorController 但对我来说似乎并非如此。

谁能解释一下这种行为?

谢谢,

马丁

【问题讨论】:

  • 您使用的是哪个版本的 ember.js?
  • 再次查看文档后,我现在看到:When a model is provided it gets a unique instance of the corresponding controller。看起来我看到的行为是预期的。现在我只想弄清楚如何获取对这个生成的控制器的引用,以便我可以在它上面设置一些属性。

标签: ember.js


【解决方案1】:

我认为你应该使用属性绑定。

在 NoticesController 中: showAdd: Ember.computed.alias('parentController.noticesShowAdd'

在 setupController 中: controller.set('noticesShowAdd', true)

那么您就不必担心如何获得对通知控制器的引用。

注意,如果在 each 内部调用 render,您可能需要使用 target 而不是 parentController

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    相关资源
    最近更新 更多