ember.js - SortableMixin doesn't sort when using a custom transform -
i decided utilize utc dates in ember app next recommendation here created next transform:
app/transforms/utc.js
import ds "ember-data"; export default ds.transform.extend({ serialize: function(value) { homecoming value ? value.tojson() : null; }, deserialize: function(value) { homecoming moment.utc(value); } }); i used in model:
app/models/payment.js
import ds 'ember-data'; export default ds.model.extend({ student: ds.belongsto('student'), date: ds.attr('utc'), amount: ds.attr('number'), formatteddate: function() { var date = this.get('date'); homecoming moment(date).format("dd/mm/yyyy"); }.property('date') }); before using utc transform able sort payments using function:
payments: (function() { homecoming ember.arrayproxy.createwithmixins(ember.sortablemixin, { sortproperties: ['date'], sortascending: false, content: this.get('content.payments') }); }).property('content.payments'), now, after using utc transform, above function doesn't work anymore. thought why?
i believe it's because moment doesn't give date objects, gives special moment object. normally, wouldn't matter since moment gives objects valueof method satisfy built-in javascript comparing operators. ember, however, uses custom sort function. looking @ source code ember.compare, can see there's specific path javascript date objects, normal javascript objects returns 0 (sorted equally).
long story short, utilize compare function instead of compare property name (using built-in javascript comparing operators):
sortfunction: function(a, b) { homecoming (a < b ? -1 : 1); } ember.js ember-data
No comments:
Post a Comment