0

我有一个骨干集合和模型,并且 'effdate' 作为显示网格中的输入之一。我想获得一个起始 'effdate' 和结束 'effdate' 作为输入,并在这些日期内对网格进行排序并显示,然后返回默认页面。

'Effdate' 的日期类型类似于 02/01/2012 作为输入。

处理这种过滤器的最佳方法是什么?

谢谢

4

1 回答 1

0

骨干集合有一个属性比较器,可以在每次添加模型时对集合进行排序,或者您可以调用sort来强制重新排序。这会触发一个排序事件,您可以使用它来更新视图。

如果您想使用不同的字段在不同的时间对其进行排序,您可以创建一个使用您要使用的字段的比较器

var Book = Backbone.Model;
var books = new Backbone.Collection;

var sortField = "transdate";

var comparator = function (book) {
    return book.get(sortField);
};

var negativeComparator = function (book) {
    return (-1 * book.get(sortField));
};
books.add(new Book({
    title: "one",
    effdate: new Date("02/01/2012"),
    transdate: new Date("03/01/2019")
}));
books.add(new Book({
    title: "two",
    effdate: new Date("02/01/2013"),
    transdate: new Date("03/01/2017")
}));
books.add(new Book({
    title: "three",
    effdate: new Date("02/01/2014"),
    transdate: new Date("03/01/2015")
}));
books.comparator = comparator;
sortField = "effdate";
books.sort();


alert(books.pluck("title"))

是一个 jsFiddle 来测试它。

于 2013-11-12T23:26:12.063 回答