我目前有一个路由servicerequests.index。在这条路线中,我正在显示我在路线中通过此呼叫获得的所有服务请求的表格:
model() {
return this.store.findAll('servicerequest').then(results =>
results.sortBy(this.get('selectedFilter')).reverse());
}
在我的hbs文件中,我有这个功能选择:
{{#power-select options=filterOptions placeholder="Select a filter"
selected=selectedFilter onchange=(action (mut selectedFilter))
searchField="filterOptions" as |filter|}}
{{filter.descr}}
{{/power-select}}
在我的控制器中,我定义了选项:
filterOptions: [
{ descr: "created_at" },
{ descr: "priority" },
{ descr: "status" }],
actions: {
selectedFilter(filter) {
this.set('selectedFilter', filter);
}
},
我想要发生的是当我选择不同的过滤器排序选项来重新排序页面上的结果时。你是怎么做的?
由于来自路径的数据和控制器中设置的选项,我不知道在哪里执行所选功率的逻辑。
任何想法或建议表示赞赏。
使用控制器中的计算机属性进行排序。不要在模型钩子中这样做。
我的回答here与此非常相关。
基本上在你的路线中这样做:
model() {
return this.store.findAll('servicerequest');
}
然后在你的控制器中:
filtetedModel: computed('selectedFilter', 'model.@each.{created_at,priority,status}', {
get() {
return this.model.sortBy(this.selectedFilter);
}
}),
filterOptions: [
{ descr: "created_at" },
{ descr: "priority" },
{ descr: "status" }
],
actions: {
selectedFilter(filter) {
this.set('selectedFilter', filter);
},
}