我希望:按复杂条件搜索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
});
答案 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;
}
未经测试的代码,没有编写二进制搜索算法。在很长的时间。希望它能给你一个想法。