2015-06-27 86 views
1

我在Ember中排序时遇到问题。Ember中的自定义排序比较

我使用moment.js来处理所有时间的烬,我从来没有使用普通的javascript日期对象,因为我需要始终知道用户设置的时区。当我做array.sortBy('datetime')和排序的属性是moment.js对象时,排序不起作用,因为比较方法使用由ember威胁时刻js作为对象,因此返回0.是否有任何方法来覆盖默认比较方法,如此处定义的 - https://github.com/emberjs/ember.js/blob/v1.13.0/packages/ember-runtime/lib/compare.js#L26

由于该方法包含在mixins中作为Enumerable和其他作为闭包,并且之后不能被覆盖。

注意:我不希望使用自定义排序像array.sort(function(a, b) ...,我想用sortBy并比较函数处理幕后的逻辑。

感谢adance

回答

0

只需重写sortyBy方法,并将它使用自己的比较功能。

您可以在Ember CLI初始值设定项中重写。

+0

是的,但'compare'用在很多地方 - 本地Array,ArrayProxy,SortableMixin等等...所以你必须在所有这些地方替换比较(包括Enumerable mixin),因为ember已经包含了它当你重新打开Enumerable时,它不会在包含该mixin的所有地方改变。 – smolnar