我有一条获取以下数据的余烬路线:
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
答案 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);
}