1

Ember では、ガイドに従って{{#each}}次のようなことを行うことで、コントローラーを動的に検索できます。

テンプレート:

{{#each controller}}
  {{name}}  
{{/each}}

アレイコントローラー:

App.DocumentListController = Ember.ArrayController.extend
  lookupItemController: ((object) ->
    if @get('name') == 'something' then 'someController'
    else 'someOtherController'

同じことをしたい状況がありますが、ArrayController の代わりに ObjectController を使用する必要があります。

したがって、私のテンプレートは次のようになります。

{{#each controller in controller.documents itemController=lookupItemController}}
  {{name}}
{{/each}}

オブジェクト コントローラ:

App.DocumentListController = Ember.ObjectController.extend
  lookupItemController: (object) ->
    if @get('name') == 'something' then 'someController'
    else 'someOtherController'

この 2 番目の例は作り話であり、機能しません。 このようなコントローラーを動的に設定する方法はあり{{#each}}ますか? これを達成するためのより良い方法はありますか?

4

1 に答える 1

0

この場合、次のようなことができます。

App.ListController = Ember.ObjectController.extend
    needs: ['documents']

App.DocumentsController = Ember.ArrayController.extend
    needs: ['list']
    contentBinding: 'controllers.list.documents'
    lookupItemController: (object) ->
        if @get('name') == 'something' then 'someController'
        else 'someOtherController'

次に、テンプレートで (「ListController」がビューのコントローラーであると仮定します):

{{#each document in controllers.documents}}
    {{document.name}}
{{/each}}
于 2013-03-13T21:29:36.177 に答える