ArrayController 如何拥有子列表而不需要显式 itemController 在 {{#each 子列表}}



这有效

{{#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='colour'的情况下做到这一点,特别是因为该选项不是动态查找的,即我无法执行itemController=itemController

问题是您正在迭代(使用每个)basicColours 计算属性(而不是数组控制器)。 如果您希望应用itemController属性,则需要在控制器本身上应用每个属性(这是当您执行{{#each}}时发生的情况(可能这些以及

{{#each project in this}}或{{#each item in controller}} )。

您也可以创建另一个模板并调用{{ render 'otherTemplate' basicColors}}

然后,它将使用OtherTemplateArrayController,您可以将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'
});

最新更新