Backbone Collection:自定义比较器

时间:2014-09-22 16:35:04

标签: javascript backbone.js

我希望:按复杂条件搜索Backbone.Collectio。更确切地说,我有startTime& endTime obj的TimePeriod属性,我想选择属于特定时刻的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
});

1 个答案:

答案 0 :(得分:1)

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;
}

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