0

有两条路由 ( comments, )trackbacks嵌套在post我直接通过content. 不幸的是,控制器似乎没有完全初始化并且内容没有被加载。commentsControllertrackbacksController/posts/1/trackbacks

这是看起来的Router样子:

Router = Ember.Router.create
  root: Ember.Route.extend
    index: Ember.Route.extend
      route: '/'

    post: Ember.Route.extend
      route: '/posts/:post_id'

      index: Ember.Route.extend
        route: '/'
        redirectsTo: 'comments'

      comments: Ember.Route.extend
        route: '/comments'
        connectOutlets: (router) ->
          controller = router.get('postController')
          controller.connectOutlet 'comments', controller.get('comments')

      trackbacks: Ember.Route.extend
        route: '/trackbacks'
        connectOutlets: (router) ->
          controller = router.get('postController')
          controller.connectOutlet 'trackbacks', controller.get('trackbacks')

这是TrackbacksController

App.TrackbacksController = App.ArrayController.extend
  init: ->
    console.log App.router.get('attributesController.content') # : []
    @_super()

是否有router.commentsController手动初始化以从中获取内容的最佳实践trackbacksController?我的方法有什么问题吗?

4

1 回答 1

4

controllers您可以使用控制器的属性从控制器访问所有控制器。例如,从 trackbacksController 中,您可以使用this.get('controllers.commentsController')

编辑:我意识到我没有得到你的问题。我认为这两个控制器之间存在一些依赖关系,从我的角度来看,您不能依赖应用程序初始化顺序。因此在 init 方法中,您将无法访问其他控制器。

但是我认为你可以在 trackbacksController 中放置一个观察者,它观察controllers.commentsController.contentor controller.commentsController.@each,所以当 commentsController 被填充时,你会得到通知。

于 2012-08-09T18:58:25.330 回答