我有一个骨干集合和模型,并且 'effdate' 作为显示网格中的输入之一。我想获得一个起始 'effdate' 和结束 'effdate' 作为输入,并在这些日期内对网格进行排序并显示,然后返回默认页面。
'Effdate' 的日期类型类似于 02/01/2012 作为输入。
处理这种过滤器的最佳方法是什么?
谢谢
我有一个骨干集合和模型,并且 'effdate' 作为显示网格中的输入之一。我想获得一个起始 'effdate' 和结束 'effdate' 作为输入,并在这些日期内对网格进行排序并显示,然后返回默认页面。
'Effdate' 的日期类型类似于 02/01/2012 作为输入。
处理这种过滤器的最佳方法是什么?
谢谢
骨干集合有一个属性比较器,可以在每次添加模型时对集合进行排序,或者您可以调用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 来测试它。