Я пытаюсь заставить функцию фильтра работать правильно. Функция принимает массив как параметр. Массив, содержащий все параметры фильтра как int. например, [2,36,11]
. Таким образом, int представляют различные параметры фильтра. Тогда я сопоставляю эти элементы массива с другим int, который приходит как переменная. например 2
например. поэтому, если 2
находится в этом массиве, фильтр должен продолжать и делать свою работу.Backbone.js filter
Проблема заключается в том, что эта функция работает только до тех пор, пока значения int в массиве не будут выше 9. Поэтому, если один из параметров фильтра равен 12
, это не сработает. Но давайте скажем, что у массива есть int, который равен 1
, и вы выбираете опцию фильтра по фильтру 12
, он будет считать, что в качестве соответствия и рендеринга нужно отображать, так как indexOf
принимает это как совпадение. Как я могу решить это довольно странное поведение?
filter: function(f) {
var filter = this.collection.filter(function(o){
var accept = false;
$(f).each(function(i,val){
if(_.indexOf(o.get('tags'), val) >-1){
accept = true;
}
})
return accept;
});
var filtered = new PeopleCollection(filter);
new PeopleView({
el: this.$('.peoplelist'),
collection: filtered
});
}
Так что соответствует 12 с 1 или 2, так как 12 содержит это число. Как я могу сделать это как идеальный матч? – user2952238
- это теги '' '' '' '' 'номеров, котор они содержат больше? в чем причина использования 'indexOf', а не прямого сравнения, например' === ' – Quince
Теги - это числа. Похоже, это в моих json '" тегах ":" 9,2,15 "'. Хм, может быть, это было бы решение? Я не совсем понимаю, как написать сравнение. У вас есть пример? – user2952238