Backbone Collection:自定义比较器

Backbone Collection: custom comparator

本文关键字:比较器 自定义 Collection Backbone      更新时间:2023-09-26

我想:通过复杂的条件搜索Backbone.Collection。更确切地说,我有startTime&TimePeriod obj的endTime属性,我想选择属于特定时刻的TimePeriod

示例:我有一个等于12045的时刻,我需要查看时间段的集合并检查每个时间段:

belongsToTimeperiod: function(timePeriod, moment) {
    return (timePeriod.startTime < moment && timePeriod.endTime > moment);
}

问题:有可能制作Backbone.Collection使用我的比较器吗?如何

代码:[可选]

var TimePeriod = Backbone.Model.extend({
    defaults: {
        'startTime': '',
        'endTime': ''
    },
    validate: function(attrs) {
        if (!startTime) return 'You missed startTime';
        if (!endTime) return 'You missed endTime';
    }
}

以及这些对象的集合:

var TimePeriods = Backbone.Collection.extend({
    model: TimePeriod
});
var searchTerm=...;
function searchModel(int start, int end){
    var i=(start+end)/2;
       var model=collection.at(i);             //http://backbonejs.org/#Collection-at
       if(model.get('property')>searchTerm){   //Collection is sorted on this 'property'
            return searchModel(start,i);
       }else if(model.getProperty()<searchTerm){
           return searchModel(i,end);
       }
   return model;
}

未测试的代码,尚未编写二进制搜索算法。在很长一段时间内。希望它能给你一个想法。