【问题标题】:Struggling with sorting data in ember在 ember 中为数据排序而苦苦挣扎
【发布时间】:2023-03-29 18:20:01
【问题描述】:

我有一个获取以下数据的 ember 路由:

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

其中一个字段是一个名为 created_at 的日期字段,我正在尝试对其进行排序。

这是我的服务请求控制器:

    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

【问题讨论】:

  • 能分享一下你的模型吗?您发布的代码对我来说似乎是正确的。但也许模型上的 created_at 属性有问题。我也觉得很奇怪,你的财产被强调了。通常 ember.js 中的约定是使用驼峰式的属性名称。
  • 您使用的是哪个版本的 Ember?我相信 computed.sort 在 2.16 中被删除了
  • 谢谢各位。我已经用您的问题的答案更新了原始帖子。任何信息表示赞赏。

标签: ember.js ember-cli


【解决方案1】:

所以我最终通过这样做来让它工作:

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

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

【讨论】:

    【解决方案2】:

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

    如果有任何后端限制,您可以将排序逻辑 sn-p 移动到序列化程序中。这样,对“servicerequest”的任何获取调用都将进行排序,并且可以避免冗余的排序逻辑。

    类似 =>

    serialize(snapshot, options) {
        snapshot.sortBy('created_at').reverse();
        return this._super(...arguments);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多