Javascript 如何对Ember.js中的多个项目进行排序

Javascript 如何对Ember.js中的多个项目进行排序,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我有这样的结构: App.Router.map(function() { this.resource('board', {path: '/board'}, function() { this.route('new', {path: '/new'}); this.route('show', {path: '/show/:board_id'}); }); }); App.Board = DS.Model.extend({ title: DS.

我有这样的结构:

App.Router.map(function() {
    this.resource('board', {path: '/board'}, function() {
        this.route('new', {path: '/new'});
        this.route('show', {path: '/show/:board_id'});
    });
});

App.Board = DS.Model.extend({
    title: DS.attr('string'),
    initialAmount: DS.attr('number'),
    initialDate: DS.attr('date'),
    boardItems: DS.hasMany('BoardItem'),
    _csrf: DS.attr()
});

App.BoardItem = DS.Model.extend({
    title: DS.attr('string'),
    income: DS.attr('number'),
    outcome: DS.attr('number'),
    date: DS.attr('date'),
    itemType: DS.attr('string'),
    board: DS.belongsTo('Board')
});

App.BoardShowRoute = Ember.Route.extend({
    model: function(params) {
        return this.store.find('board', params.board_id).sort();
    }
});
在视图中,我列出了如下董事会项目:

{{#each boardItems}}
我想做的是按日期对董事会项目进行排序,但我找不到一种方法来做。。。 有什么想法吗


谢谢

您应该在视图后面的控制器中创建一个计算属性

控制器 模板 您可以使用
{{render}}
帮助程序包装
{{{each}}…{{/each}
循环,并在控制器中进行排序:

控制器: 模板:
使用computed属性进行排序将导致每次
boardItems
更改时完全重新计算已排序的数组。这里描述的
排列内容方法并非如此。

谢谢,它奏效了!您能解释一下这部分吗:.property('boardItems.@each.date')是的,每次在
boardItems
中添加一个新项目,或者如果
date
字段发生变化(使用适当的设置器)时添加一个新项目在任何
boardItems
上,它都将重新计算属性。假设您希望
boardItems
在应用程序中每次使用
board
时都以这种方式进行排序…在模型中定义
sortedBoardItems
是否是一种罪恶?arrayController正在贬值
App.BoardShowController = Em.ObjectController.extend({
  sortedBoardItems: function(){
    return this.get('boardItems').sortBy('date');
  }.property('boardItems.@each.date')
});
{{#each sortedBoardItems}}
App.BoardItemsController = Ember.ArrayController.extend({
  sortProperties: ['date'],
  sortAscending: false // newest first
});
{{#render "boardItems" boardItems}}
  {{#each arrangedContent}}
     Title: {{title}}
     ...
  {{/each}}
{{/render}}