Ember.js路由器v2和注入的控制器

Ben*_*all 3 ember.js

在旧的V1路由器中,所有控制器都注入到路由器中,因此可以:

foo = App.get('router').get('applicationController').get('bar');
Run Code Online (Sandbox Code Playgroud)

在新的V2路由器中,我似乎无法做到:

router = App.get('router')
Run Code Online (Sandbox Code Playgroud)

这改变了吗?

预期的设计模式是否已更改?我一直都做错了吗?

Yeh*_*atz 8

今天,您可以通过以下方式访问路线(和路线行动)中的控制器:

this.controllerFor('posts')
Run Code Online (Sandbox Code Playgroud)

在控制器中,您声明对其他控制器的依赖:

App.Post = Ember.ObjectController.extend({
  needs: ['posts']
});
Run Code Online (Sandbox Code Playgroud)

然后,在控制器内部,您也可以使用this.controllerFor.

仅供参考,我们计划让this.get('controllers.posts')在needs使用的控制器内工作,这将使模板中的依赖控制器直接使用.