この commitのメモで、Ember チームは、これApp.__container__.lookup()
はコントローラーにアクセスする方法ではないことを明確にしています。代わりに、needs
プロパティを使用する必要があります。
この背後にある理論的根拠と、シングルトンコントローラーにアクセスする慣用的な方法を理解しています。
ただし、私のアプリでは、インスタンス コントローラーが必要な場合がいくつかあります。その場合、私はApp.__container__.lookupFactory()
プロトタイプを取得するために使用していますcreate()
。extend()
これを行うより良い方法はありますか(を使用せずに__container__
?
編集:
使用例を次に示します。
App.MyContainerView = Ember.ContainerView.extend
...
addChildView: ->
@get("content").pushObject(App.MyChildView.create(...))
上記の例では、新しいビューをスタックにプッシュします (ビューを動的に作成できるようにします)。
ただし、これらのビューは を使用して作成されているため、適切なコンテナ (およびその他のプロパティ) が設定されていない (可能性があります) App.MyChildView.create()
。これは、Ember を既存のアプリに部分的に統合する場合に特に当てはまります。
これらのビューを作成する方法は、代わりに次のようになります。
App.__container__.lookupFactory("view:my_child").create()
その場合、すべてが問題ありません。
ルーターのコンテキスト外でインスタンスコントローラーを作成するための追加のユースケースが存在します..しかし、考え方は同じです。