苦苦于在ember中排序数据

时间:2018-04-11 19:42:58

标签: ember.js ember-cli

我有一条获取以下数据的余烬路线:

return this.store.findAll('servicerequest');

其中一个字段是一个名为created_at的日期字段,我试图按其排序。

这是我的servicerequest控制器:

    import Controller from '@ember/controller';
    import { sort } from '@ember/object/computed';

    export default Controller.extend({
       appName: 'Service Requests',
       sortAscending: false,
       sortDefinition: ['created_at:desc'],
       sortedRequests: sort('servicerequest', 'sortDefinition')
    });

以下是输出数据的hbs部分:

      {{#each sortedRequests as |servicerequest|}}
        {{servicerequest-list status=servicerequest.status srdescription=servicerequest.srdescription priority=servicerequest.priority created_at=servicerequest.created_at
          current_user_id=servicerequest.current_user_id servicerequestId=servicerequest.id}}
      {{/each}}

我无法通过created_at字段desc进行任何排序。我做错了什么?

更新:

这是我的模特:

    import DS from 'ember-data';

    export default DS.Model.extend({
      requester_name: DS.attr('string'),
      srdescription: DS.attr('string'),
      priority: DS.attr('string'),
      status: DS.attr('string'),
      created_at: DS.attr('date'),
      current_user_id: DS.attr()
    });

数据来自rails api。 created_at字段是系统默认的记录,这就是下划线的原因。

我正在使用ember-cli:3.0.2

2 个答案:

答案 0 :(得分:0)

所以我最终通过这样做得到了它:

return this.store.findAll('servicerequest').then(results => 
results.sortBy('created_at').reverse());

不确定这是否是最好的方式,但现在它正在做我需要的。

答案 1 :(得分:0)

理想情况下,任何数据操作都应在后端执行。

如果有任何后端限制,您可以将排序逻辑代码段移动到序列化程序中。这样,任何对“服务请求”的提取调用都将被排序,并且可以避免冗余排序逻辑。

像=>

之类的东西
serialize(snapshot, options) {
    snapshot.sortBy('created_at').reverse();
    return this._super(...arguments);
}