1

在 Ember 中,您可以根据指南动态查找控制器并{{#each}}执行以下操作:

模板:

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

阵列控制器:

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

我有一种情况,我想做同样的事情,但我需要使用 ObjectController 而不是 ArrayController。

所以我的模板看起来更像这样:

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

对象控制器:

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

第二个示例只是编造的,不起作用。 有没有办法在一个中动态设置这样的控制器{{#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 回答