Ember.js使用Router架构获取父路由的控制器



如果我有一个使用路由器架构的应用程序,我如何获得父路由的控制器?

假设一条类似的路线

Router: Ember.Router.extend 
    enableLogging: true
    root: Ember.Route.extend
        main: Ember.Route.extend
            route: '/'
            connectOutlets: (router, event) ->
                 router.get('applicationController').connectOutlet('main')
            editor: Ember.Route.extend
                route: '/editor'
                connectOutlets: (router, event) ->
                    router.get('mainController').connectOutlet('editor')

那么,我的EditorController如何获得我的MainController呢?

我尝试过@get('parentController')@get('parent')@get('controller'),但没有成功

您可以通过控制器的target属性访问路由器。

例如,在您的情况下,来自任何控制器:

@get('target.mainController')

或者,如果你不使用Ember:的头部修订版

@getPath('target.mainController')

根据我的理解,一个应用程序应该只有一个路由器,所以我们为什么不这样做呢:

@get('App.router.mainController')

我不知道什么是正确的方法!我觉得"target"是在存储要调度操作或事件的对象。

最新更新