5

解释:

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

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

我也有App.UserController一个App.User记录作为它的content

问题:

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

但是,使用新路由器,这不再可能。

问题:

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

4

1 回答 1

3

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

于 2013-01-04T06:18:52.600 回答