11

私はしばらく Ember を使用してきましたが、それでもベスト プラクティスを見つけるのに苦労することがあります。したがって、コントローラーとビューに関するEmberの方法の1つは

Ember の設計者の意見では、ルーターによって強制されますが、特定の BaseName (たとえば、"Application"、"CustomerEntry"、"My Items") には BaseNameView と BaseNameController が必要であるというものです。--残り火ガイド

問題は、ページに同じビューの複数のインスタンスが必要な場合です。コントローラーはアプリケーションの開始時に作成されるため、アプリケーションの名前空間の下にあるシングルトンであり、モデル データの 2 つのインスタンスを保持することはできません。

私が見る 1 つの解決策は、コントローラー (およびモデル データ) を手動で作成し、それらをビューに渡すことです。しかし、この場合、Ember がコントローラーを自動的に作成しないようにしたいと思います。別の言い方をすれば、なぜ Ember はアプリケーションの起動時にコントローラーをシングルトンとして作成するのでしょうか。

4

1 に答える 1

2

View 型に対応する Controller 型がないユースケースは多いと思います。特に、ビューのタイプが本格的なアプリケーション機能というよりも UI ウィジェットに似ている場合。多くのビューで同じコントローラーを共有できます。この applicationView テンプレートを見てください。

<h1>Here are two files, compare them</h1>
{{view App.MyFileView contentBinding="leftFileContent"}}
{{view App.MyFileView contentBinding="rightFileContent"}}

これにより、ビュー クラスの 2 つのインスタンスが作成され、それらのコンテンツ プロパティが applicationController の 2 つの異なるプロパティにバインドされます。これらの両方のビューのコントローラー プロパティは、シングルトンの applicationController インスタンスに設定されます。

コントローラーがシングルトンである理由の 1 つは、App.router.myController.

于 2012-10-23T04:04:08.047 に答える