ArrayController如何在{{#each sublist}}中不需要显式的itemController而有子列表?

时间:2013-10-05 02:21:02

标签: ember.js

有效

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

1 个答案:

答案 0 :(得分:3)

问题是你在basicColours计算属性(不是数组控制器)上迭代(使用每个)。如果你想要应用itemController属性,你需要每个都通过控制器本身(这是你执行{{#each}}时会发生的事情(可能还有{{#each item in this}}或{{#each控制器中的项目}})。

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

然后使用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'
});