1

この 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() 

その場合、すべてが問題ありません。

ルーターのコンテキスト外でインスタンスコントローラーを作成するための追加のユースケースが存在します..しかし、考え方は同じです。

4

1 に答える 1