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')
// ...
我在我的应用程序中使用 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')
// ...