Javascript Ember.js使用路由器架构获取父路由的控制器
如果有使用的应用程序,如何获取父路由的控制器 假设一条像这样的路线Javascript Ember.js使用路由器架构获取父路由的控制器,javascript,coffeescript,ember.js,ember-old-router,Javascript,Coffeescript,Ember.js,Ember Old Router,如果有使用的应用程序,如何获取父路由的控制器 假设一条像这样的路线 Router: Ember.Router.extend enableLogging: true root: Ember.Route.extend main: Ember.Route.extend route: '/' connectOutlets: (router, event) -> router.get(
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
如何获得我的main控制器
我尝试了
@get('parentController')
,@get('parent')
,和@get('controller')
,但没有成功您可以通过控制器的目标
属性访问路由器
e、 g,在您的情况下,从任何控制器:
@get('target.mainController')
或者,如果不使用灰烬的头部修订:
@getPath('target.mainController')
根据我的理解,一个应用程序应该只有一个路由器,那么我们为什么不这样做呢:
@get('App.router.mainController')
我不知道什么是正确的方法!我觉得“目标”存储的是将动作或事件发送到的对象。谢谢!看起来它实际上是
@getPath('taget.mainController')
,因为@get('target.mainController')
返回未定义的。我会看看我做了什么不可靠的事,你能不能也试着确认一下?在我接受之前,我想确保这是100%正确的。当然,我很抱歉让你感到困惑。将路径表达式与get
一起使用是最近在最新版本中出现的。除非您正在跟踪头部,否则您确实应该使用getPath
。更新的答案。谢谢,我可以确认这也有效@Mike Aski先得到了答案,所以他保留了答案,但我会投赞成票!:)