Javascript Ember.js:对ArrayController进行分组/分区

Javascript Ember.js:对ArrayController进行分组/分区,javascript,ember.js,Javascript,Ember.js,我有一个ArrayController,我想根据特定键的值对该ArrayController的内容进行分组 例如,如果我的ArrayController中的对象是: id status name ----------------------------- 1 1 some name 2 1 some other name 3 2 blah 4 3 blah again 然后我想按状态对内容进行分组 为此,我

我有一个ArrayController,我想根据特定键的值对该ArrayController的内容进行分组

例如,如果我的ArrayController中的对象是:

id   status   name
-----------------------------
1    1        some name
2    1        some other name
3    2        blah
4    3        blah again
然后我想按
状态对内容进行分组

为此,我尝试在ArrayController中使用计算属性:

App.SomeArrayController = Ember.ArrayController.extend({
  itemController: 'some-item',      

  status1: Ember.computed.filterBy('content', 'status', 1),
  status2: Ember.computed.filterBy('content', 'status', 2),
  status3: Ember.computed.filterBy('content', 'status', 3)
});
// item controller used in the ArrayController
App.SomeItemController = Ember.ObjectController.extend({
  anotherKey: function () {
    return 'hey ' + this.get('name');
  }.property('name')
});


<!-- template to display status=1 items -->
{{#each status1}}

  // displays the name (as a property from the model)
  {{this.name}}

  // nothing displays here
  // (leading me to believe it is not being wrapped by the item controller)
  {{this.anotherKey}}
{{/each}}
在模板中,这些将被显示,但它们不会被ArrayController中指定的itemControllerI包装:

App.SomeArrayController = Ember.ArrayController.extend({
  itemController: 'some-item',      

  status1: Ember.computed.filterBy('content', 'status', 1),
  status2: Ember.computed.filterBy('content', 'status', 2),
  status3: Ember.computed.filterBy('content', 'status', 3)
});
// item controller used in the ArrayController
App.SomeItemController = Ember.ObjectController.extend({
  anotherKey: function () {
    return 'hey ' + this.get('name');
  }.property('name')
});


<!-- template to display status=1 items -->
{{#each status1}}

  // displays the name (as a property from the model)
  {{this.name}}

  // nothing displays here
  // (leading me to believe it is not being wrapped by the item controller)
  {{this.anotherKey}}
{{/each}}
//ArrayController中使用的项控制器
App.SomeItemController=Ember.ObjectController.extend({
另一个键:函数(){
返回'hey'+this.get('name');
}.property('名称')
});
{{{#每个状态1}
//显示名称(作为模型的特性)
{{this.name}}
//这里什么也没有显示
//(使我相信它不是由项目控制器包装的)
{{this.anotherKey}}
{{/每个}}

我做错了什么?

itemController
仅在迭代控制器集合时包装项目

{{#each item in controller}}
  {{item.coolItemControllerProperty}}
{{/each}}
它不适用于控制器内的任何集合。如果您尝试迭代底层模型/内容,它将不会被包装

{{#each item in content}}
  {{item.coolItemControllerProperty}} // undefined
{{/each}}

{{#each item in model}}
  {{item.coolItemControllerProperty}} // undefined
{{/each}}
幸运的是,您可以在模板中为这些情况指定
itemController

{{#each item in status1 itemController='some-item'}}
  {{item.coolItemControllerProperty}}
{{/each}}