Здравствуйте, пытаюсь эксперементировать с backbone js.
Хотел сделать простенький фильтр колекций
var mClub = new Cafe([
{id: 1, name: "name 1", kitchens: [1,2], show: 1},
{id: 2, name: "name 2", kitchens: [1,3], show: 1},
{id: 3, name: "name 3", kitchens: [2], show: 1},
{id: 4, name: "name 4", kitchens: [1], show: 1},
{id: 5, name: "name 5", kitchens: [3], show: 1},
]);
var filters = new Filter([
{id: 1, kitchens: new Array()}
]);
фильтр «kitchens» заполняется по мере выбора соответствующих параметров
Теперь задача — отсортировать колекцию mClub если хоть один параметр из filters встречается в kitchens — то оставить show 1 если нет то 0
Думал для этого должен подойти подход с indexOf — в итоге вот такой код
var Cafe = Backbone.Collection.extend({
model: CafeModel,
check : function(filter) {
var show = true;
var a = filter.get('kitchens');
this.filter(function(cafe) {
var b = cafe.get('kitchens');
// Попытка с indexOf - не работает
// если задать а и b ручками - то работает
// var a = [1,3]; var b = [3,2]
for (var i = 0; i < b.length; i++){
if(_.indexOf(a, b[i])){
//alert('есть вхождение')
}
}
//через фильтр - работает
b.filter(function(c){
for (var i = 0; i < a.length; i++){
if( a[i] == c){
//alert('есть вхождение')
}
}
});
});
}
});
Возможно я чего то не так делаю и может кто подскажет способ получше, с последствии фильтр будет дополняться другими параметрами.