2014-09-22 121 views
0

我想:通过复杂的标准来搜索Backbone.Collectio。更确切地说,我有 & endTime属性TimePeriod obj,我想选择属于特定时刻的TimePeriod骨干集合:自定义比较器

例子:我有一瞬间等于12045,我需要经过timeperiods的收集和检查每个:

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

这是你在找什么? http://stackoverflow.com/questions/14450011/search-collection-and-retrieve-model-backbonejs – levi 2014-09-22 16:57:05

+0

@levi不,因为他们使用方法过滤器。问题是'TimePeriods'是连续时间段的大集合。所以我需要的是二进制搜索,而不是遍历所有元素。 – 2014-09-22 17:01:05

回答

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

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