首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >渲染辅助对象和控制器实例化

渲染辅助对象和控制器实例化
EN

Stack Overflow用户
提问于 2013-05-25 17:33:32
回答 1查看 582关注 0票数 0

我在我的应用程序中广泛使用渲染控制器,并且在理解围绕控制器创建的逻辑时遇到了问题。

有问题的代码使用这个(精简版)模板(使用emblem.js):

代码语言:javascript
复制
    .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:

代码语言:javascript
复制
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控制器的内容,所以我不会将任何模型传递给模板中的render调用。

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

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

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

相关的docs说渲染视图帮助器将Get (or generate) the singleton instance of AuthorController,但对我来说似乎不是这样。

有没有人能解释一下这种行为?

谢谢,

马丁

EN

回答 1

Stack Overflow用户

发布于 2013-08-31 17:01:03

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

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

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

然后,您不必担心如何获得对notices控制器的引用。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16748226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档