Ember - 在 findAll 之后对模型进行排序

Ember - Sort Model after findAll

我在我的应用程序中使用 Emberfire,我正在尝试 findAll 统计数据,然后按键对该模型进行排序,如下例所示。但是,当我以这种方式排序时,我无法在模板中查看实时更新,我必须重新加载页面才能在视图中查看 new/updated 数据。

 model() {
    return this.store
      .findAll('stats', {
        reload: true,
        backgroundReload: true
      })
      .then(stats => stats.sortBy('date'));
  }

您必须在您的控制器或组件中定义计算 属性,其中 return 是排序的统计数据。不要在路由的模型挂钩处对数据进行排序。只是 return findAll 的承诺。

例如:

//controller.js or component.js 
sortedStats: computed('model.@each.date', function() {
  return this.get('model').sortBy('date');
})

此外 ember 提供 sort macro:

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

使用它可以更优雅的解决你的需求:

// ...
this.init() {
  this._super(...arguments);
  this.set('sortDefinition', ['date:asc']);
}
sortedStats: sort('model.@each.date', 'sortDefinition')
// ...