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

时间:2013-01-04 02:11:05

标签: ember.js

说明:

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

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

我还有一个App.UserController,其App.User的记录为content

问题:

以前,我能够通过相当丑陋的App.I18nControllerApp.UserControllerlocaleBinding: 'App.router.userController.content.locale'之间设置绑定,允许我在本地化时随时读取用户的语言环境。

然而,使用新的路由器,这已不再可能。

问题:

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

1 个答案:

答案 0 :(得分:3)

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