在Ember.js中对对象的关联进行排序

时间:2013-09-16 02:24:15

标签: sorting ember.js

我正在寻找一个对象的关联 - 例如,我在一个组(对象)页面上,并且该组有很多我在该页面上显示的帖子。我如何对这些帖子进行排序以通过created_at或其他属性来安排它们?

1 个答案:

答案 0 :(得分:0)

您可以使用ArrayController收集Post个,然后使用内置的sortPropertiessortAscending属性。

App.GroupRoute = Ember.Route.extend({
  setupController : function(controller,model){
    this._super(controller,model);
    this.controllerFor('posts').set('content',model.get('posts'));
  }
});

App.GroupController = Ember.ObjectController.extend({
  needs : ['posts']
}); 

App.PostsController = Ember.ArrayController.extend({
  sortProperties : ['createdAt'],
  sortAscending  : false
});

通过调用组模板中的render,您可以访问由主控制器need编辑的控制器。那么,您的group模板看起来像这样:

<h2>Group : {{name}}</h2>
{{ render 'posts' }}

然后posts模板可能是:

<ul>
{{#each post in arrangedContent}}
  <li>{{ post.title }}</li>
{{/each}}
</ul>

请注意,它使用arrangedContent作为集合的名称。您可以在setsortProperties sortAscendingPostsController动态更改排序顺序。

这是一个总体思路的JSFiddle(但具有不同的模型名称)。

http://jsfiddle.net/YeKCf/

单击表格中的列标题以查看动态排序。