ember.js - Ember.computed.sort doesn't seem to work -
i have template so:
{{#each rate in package.ratessorted}} {{rate.year}} {{/each}} i want rates sorted ascending year, have:
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]} ] }); and rate model looks this:
var rate = ds.model.extend({ year: ds.attr('number'), }); rate.reopenclass({ fixtures: [ {id: 4, year: 4}, {id: 1, year: 1}, {id: 3, year: 3} ] }); but ends being sorted 3,4,1. why?
it's because ember.computed.sorted expects -1 , 1 rather true or false.
var package = ds.model.extend({ ratessorted: ember.computed.sort('rates', (a, b) => a.get('year') < b.get('year') ? -1 : 1) }); works. using sorting definitions, better version is:
var package = ds.model.extend({ ratesorting: ['year'], ratessorted: ember.computed.sort('rates', 'ratesorting') });
Comments
Post a Comment