1

有效

{{#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

4

1 回答 1

3

问题是您正在对 basicColours 计算属性(而不是数组控制器)进行迭代(使用 each)。如果你想应用 itemController 属性,你需要每个控制器本身(当你做 {{#each}} 时会发生这种情况(可能这些以及 {{#each item in this}} 或 {{#each控制器中的项目}})。

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

然后它将使用您可以添加 itemController 的 OtherTemplateArrayController ,然后控制器的内容将是您的计算属性。

在模板中:

 {{ 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'
});
于 2013-10-05T17:44:41.480 回答