Ember power选择对表格结果进行排序

时间:2018-04-13 18:17:15

标签: ember.js ember-data ember-cli ember-power-select

我目前有一个路由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);

  }
},

我想要发生的是当我选择不同的过滤器排序选项来重新排序页面上的结果时。你是如何做到的?

根据来自路线的数据和控制器中设置的选项,我不知道在哪里做所选功率的逻辑。

感谢任何想法或建议。

1 个答案:

答案 0 :(得分:1)

使用控制器中的计算机属性进行排序。不要在模型钩子里做这件事。

我的回答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);
  },
}