5

説明:

新しい Ember.js ルーターでは、多くのことが変更されました。私はほとんどのものを移行しましたが、Ember.js のやり方に合わないと思われる使用例が 1 つあります。

いくつかのコントローラーを備えたアプリがあるとします。これらのコントローラーには、 my のルートに属するものとApp.Routerそうでないものがあります。つまり、 myI18nControllerです。これは、Handlebars ヘルパーを介してアプリ全体を確実に変換する非ルーター コントローラーです。

としてレコードApp.UserControllerを持つもあります。App.Usercontent

問題:

以前は、かなり醜い と を介してApp.I18nControllerとの間のバインディングをセットアップでき、ローカライズ時にいつでもユーザーのロケールを読み取ることができました。App.UserControllerlocaleBinding: 'App.router.userController.content.locale'

しかし、新しいルーターでは、これはもはや不可能です。

質問:

私の質問は、新しいルーターを使用してこのバインディングをどのようにセットアップすればよいですか?

4

1 に答える 1

3

新しいルーターでは、コントローラー間のバインディング(依存関係)を設定するためのいくつかの異なる戦略があります。1つのオプションはthis.controllerFor、ルート定義のsetupControllersコールバックで設定することです。もう1つは、アプリを作成する前に、注入の依存関係を登録することです。これらと他のいくつかのオプションについては、このgithubの問題で説明しています。そのスレッドをたどると、これらのさまざまな戦略のコード例が見つかります。実際の規則はまだ確立されていないようですが、App.container.injection("controller", "settings", "controller:settingsController")非常に宣言的で明確であるため、アプローチのような呼び出しが好きです。

于 2013-01-04T06:18:52.600 に答える