Ember.computed.sort似乎不起作用

时间:2015-07-07 22:20:23

标签: ember.js ember-data

我有一个这样的模板:

{{#each rate in package.ratesSorted}}
  {{rate.year}}
{{/each}}

我希望费率按升序年份排序,所以我有:

 var Package = DS.Model.extend({
  rates: DS.hasMany('rate'),
  ratesSorted: Ember.computed.sort('rates', (a, b) => {
    return a.get('year') > b.get('year');
  })
});

Package.reopenClass({
  FIXTURES: [
    {id: 1, rates: [1, 3, 4]}
  ]
});

我的费率模型看起来像这样:

var Rate = DS.Model.extend({
  year: DS.attr('number'),
});

Rate.reopenClass({
  FIXTURES: [
    {id: 4, year: 4},
    {id: 1, year: 1},
    {id: 3, year: 3}
  ]
});

但它最终会被排序3,4,1。为什么呢?

1 个答案:

答案 0 :(得分:0)

这是因为Ember.computed.sorted期望-11而不是真或假。

var Package = DS.Model.extend({
  ratesSorted: Ember.computed.sort('rates', (a, b) => a.get('year') < b.get('year') ? -1 : 1)
});

作品。使用排序定义,更好的版本是:

var Package = DS.Model.extend({
  rateSorting: ['year'],
  ratesSorted: Ember.computed.sort('rates', 'rateSorting')
});