У меня есть таблица, в которой я пытаюсь добавить фильтрацию в метеор по определенным полям и тегам. Прямо сейчас есть поле для каждой строки, которая называется race
и against
. Есть два элемента выбора над таблицей (race-select
и against-select
), которые вы можете использовать, чтобы отфильтровать, какие результаты в таблице вы хотите видеть, но код действительно неуклюжий, и если я хочу добавить дополнительную фильтрацию для других тегов, код просто собирается стать грязнее.Лучшая фильтрация для таблицы в метеоре
Некоторые из кода просто пытаются справиться с начальными значениями Сессии.
var racelist = ['zerg', 'terran', 'protoss'];
Template.buildsList.helpers({
builds : function() {
if (typeof(Session.get('race-select')) == 'undefined' || Session.get('race-select') == 'all races'){
Session.set('race-select', racelist);
}
if (typeof(Session.get('against-select')) == 'undefined' || Session.get('against-select') == 'all races'){
Session.set('against-select', racelist);
}
return Builds.find({race : {$in : Session.get("race-select")}, against : {$in : Session.get("against-select")}}, { sort: { createdAt: -1 } });
}
});
Template.buildsList.events({
"change #race-select" : function(e){
Session.set('race-select', [$(e.target).val().toLowerCase()])
},
"change #against-select" : function(e) {
Session.set('against-select', [$(e.target).val().toLowerCase()])
}
})
Существует много почти повторяющиеся строки, но я хочу знать, если есть лучший способ реализации такого рода функция фильтрации.
Я настоятельно рекомендую использовать пакет Filter-Collections для любой фильтрации в метеор. Вы можете клонировать его из https://github.com/parhelium/filter-collections, есть несколько исправлений. После того, как вы клонируете, просто добавьте в каталог dir, чтобы сделать доступным сразу в вашем приложении meteor и введите meteor add parhelium: коллекции фильтров. –