如何使用新的Ember.js路由器设置控制器之间的绑定

Kas*_*ann 5 ember.js

说明:

新的Ember.js路由器改变了很多东西.我已经迁移了大部分内容,但是有一个用例我似乎无法适应Ember.js的做事方式.

说我有一些带有控制器的应用程序.其中一些控制器属于我的路线App.Router,其中一些不属于我的路线I18nController.这是一个非路由器控制器,可确保通过Handlebars帮助程序在整个应用程序中翻译内容.

我也有一个App.UserControllerApp.User记录的content.

问题:

以前,我是能够建立之间的绑定App.I18nController,并App.UserController通过比较难看localeBinding: 'App.router.userController.content.locale',让我随时定位时读取用户的语言环境.

但是,使用新的路由器,这已不再可能.

题:

我的问题是:我应该如何使用新路由器设置此绑定?

Sea*_*ara 3

对于新路由器,有几种不同的策略用于在控制器之间设置绑定(依赖关系)。this.controllerFor一种选择是在路由定义中的 setupControllers 回调中进行设置。另一种方法是在创建应用程序之前注册注入的依赖项。本期 github中讨论了这些选项和其他几个选项。如果您遵循该线程,您将找到这些不同策略的代码示例。似乎尚未建立真正的约定,但我喜欢类似调用的App.container.injection("controller", "settings", "controller:settingsController")方法,因为它非常声明性和清晰。