2012-08-09 66 views
0
加载内容

有两个路由(commentstrackbacks)嵌套在post我尝试直接通过/posts/1/trackbacks进入应用程序之后,从trackbacksController访问的commentsControllercontent。不幸的是,它看起来像控制器没有完全初始化,并且内容没有被加载。烬路由器 - 从不同控制器上的相同的水平

这是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

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

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

但我认为你可以把一个观察者放在trackbacksController中,它观察着controllers.commentsController.content[email protected],所以当填充commentsController时,你会收到通知。

+0

谢谢 - 我正在做一个属性,由于某种原因,它不会被触发。对我来说,似乎控制器内容在我调用特定路由之前不会被分配。 – pex 2012-08-10 09:29:20

+0

...我可能会用观察员试一下,很难。 – pex 2012-08-10 09:29:37

+0

实际上,控制器内容在您为controller.set('content',...)显式指定时,或者当您使用上下文对象调用connectOutlet()时,会进行赋值。 – 2012-08-10 09:43:47

相关问题