javascript - 多种分类的 Backbone.js 集合

标签 javascript sorting collections backbone.js

我有一个包含名称和日期的待办事项列表。我希望能够使用标题或日期对列表进行排序。我该怎么做?比较器只允许一种类型的排序。

谢谢。

最佳答案

可以在比较器中实现更多逻辑,以便您可以抽象出一些排序逻辑:

var Collection = Backbone.Collection.extend({

    model: myModel,
    order: 'name'

    comparator: function(model) {
        if (this.order === 'name') {
            return model.get('name');
        } else {
            return model.get('date'); //or modify date into a numeric value
        }
    }
});

然后更改您希望的排序方式:

myCollection.order = 'date';
myCollection.sort();

这将调用比较器函数并以此方式对其进行排序。

您可以在 View 中收听求助:

this.listenTo(myCollection,'sort',this.render);

这有一个额外的好处,每次添加模型时,它都会调用比较器并使用您当前的设置对其进行排序,因为排序方法存储在集合中。

关于javascript - 多种分类的 Backbone.js 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11870764/

相关文章:

javascript - 如何在ajax成功的循环外访问$.each的值?

javascript - javascript中的全局变量不会改变

正则表达式 : count unescaped quotes in string

javascript - 基于数组按 ids 组织列表 - jQuery/JS

javascript - 按日期对 javascript 数组进行排序

java - 如何根据ename删除Employee的arrayList中的重复项

javascript - AES - 加密 JS 和 PHP

java - 一次查找数组 12 个元素的最大值

c# - 只读字符串列表

java - HashSet 和 HashMap 的区别?