2014-09-22 177 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; 
} 

未經測試的代碼,不寫二進制搜索算法中。在很長的時間。希望能給你一個想法。