Ember.js ArrayController如何在{{{each sublist}中拥有子列表而不需要显式itemController?

Ember.js ArrayController如何在{{{each sublist}中拥有子列表而不需要显式itemController?,ember.js,Ember.js,此有效: {{#each basicColours itemController='colour'}} ColoursController = Ember.ArrayController.extend({ itemController: 'colour', numBasicColours: 5, basicColours: function(){ return this.get('arrangedContent').slice(0, this.get('numBasicCo

有效

{{#each basicColours itemController='colour'}}

ColoursController = Ember.ArrayController.extend({
  itemController: 'colour',
  numBasicColours: 5,
  basicColours: function(){
    return this.get('arrangedContent').slice(0, this.get('numBasicColours'))
  }.property('arrangedContent'),
});

但是我希望能够在每次调用中不使用
itemController='color'
,特别是因为该选项不是动态查找的,也就是说,我无法执行
itemController=itemController

问题是您正在迭代(使用每个)基本颜色计算属性(而不是数组控制器)。如果希望应用itemController属性,则需要将每个属性覆盖到控制器本身上(这是在执行{{{each}}操作时发生的情况(可能还有这些属性{{{each}中的每个项目}或{{{each}中的每个项目})

您也可以创建另一个模板并调用 {{呈现“其他模板”基本颜色}

它将使用其他TemplateArrayController,您可以将itemController添加到其中,然后控制器的内容将成为您的计算属性

在模板中:

 {{ render 'otherTemplate' basicColours}}

ColoursController = Ember.ObjectController.extend({
 numBasicColours: 5,
 basicColours: function(){
   return this.get('arrangedContent').slice(0, this.get('numBasicColours'))
 }.property('arrangedContent'),
});

OtherTemplateArrayController = Ember.ArrayController.extend({
  itemController: 'colour'
});

这可能不是您想要的,但您只需要在循环或控制器中声明itemController。尽管上述方法可行,但数组控制器确实定义了itemController,并且有一个裸
{{each}
按预期工作,在循环中提供一个
colorcontroller
的实例导致迭代器
是一个
颜色
,而不是
颜色控制器
,除非明确设置了
itemController
。问题的原因是,是的,我只想在array\u控制器中声明它。