【问题标题】:Custom sorting compare in EmberEmber 中的自定义排序比较
【发布时间】:2015-06-27 18:01:51
【问题描述】:

我在 Ember 中排序时遇到问题。

我使用 moment.js 来处理 ember 中的所有时间,我从不使用纯 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

由于该方法以Enumerable 的形式包含在mixins 中,而其他方法则以闭包形式包含在其中,因此之后无法被覆盖。

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

感谢您

【问题讨论】:

    标签: javascript ember.js


    【解决方案1】:

    只需重写 sortyBy 方法并让它使用您自己的比较函数。

    您可以在 Ember CLI 初始化程序中进行覆盖。

    【讨论】:

    • 是的,但是compare 用于很多地方 - 原生 Array、ArrayProxy、SortableMixin 等等......所以你必须在所有这些地方替换 compare(包括 Enumerable mixin),由于 ember 已经包含它,并且当您重新打开 Enumerable 时,它​​不会在包含该 mixin 的所有地方发生变化。
    猜你喜欢
    • 2021-03-23
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 2011-05-10
    相关资源
    最近更新 更多