在Ember中,您可以使用{{#each}}
动态查找控制器,执行类似according to the guides的操作:
模板:
{{#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}}
中动态设置这样的控制器?有没有更好的方法来实现这一目标?
答案 0 :(得分: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}}