2014-12-03 3 views
0

В настоящее время у меня есть почти работает. Я использую следующее:Как фильтровать по нескольким опциям выбора в магистрали

this.collection.reset(jobArray, {silent: true}); 

var filterDepartment = this.filterDepartment; 
var filterCategory = this.filterCategory; 
var filterLocation = this.filterLocation; 

var filteredResult = this.collection.where({ 
    department: filterDepartment, 
    category: filterCategory, 
    location: filterLocation 
}); 

this.collection.reset(filteredResult); 

Это отлично работает, если я выбираю отдел, категорию и местоположение. Однако, если я хочу, чтобы он только отфильтровался по местоположению отдела +, оставив категорию как значение по умолчанию «все», он должен вернуть отфильтрованный/выбранный отдел и местоположение во всех категориях. Кроме того, если я выбираю категорию, а затем выбираю «все», он должен тогда искать только по местоположению.

У меня есть способ сделать это, но это много кода, конечно, есть более простой способ?

ответ

0

Как насчет

this.collection.reset(jobArray, {silent: true}); 

var filterDepartment = this.filterDepartment; 
var filterCategory = this.filterCategory; 
var filterLocation = this.filterLocation; 

var filter = {}; 
if (filterDepartment) 
    filter['department'] = filterDepartment 

if (filterCategory) 
    filter['category'] = filterCategory; 

if (filterLocation) 
    filter['location'] = filterLocation; 

console.log(filter); // Dump the filter 

var filteredResult = this.collection.where(filter); 

this.collection.reset(filteredResult); 
+0

Это в основном работает, спасибо! Единственная проблема теперь в том, что как только я выбрал вариант, затем выберите параметр по умолчанию «все», все будет скрыто. Я попытался изменить свой код на что-то вроде: if ((filterDepartment) && (filterDepartment! = 'All')) – emily

+0

'if (filterDepartment && filterDepartment! = 'All')' звучит правильно для меня. Уверены, что это 'все' (не' All' или 'ALL')? Также попробуйте сбросить фильтр после его назначения и посмотреть, правильно ли он (обновленный вопрос). –

+0

Он работал, но мне пришлось обернуть все это в условном заявлении. Спасибо за вашу помощь! [Вот окончательный код] (http://stackoverflow.com/a/27283544/965940) – emily

0

разрешаемые с помощью Khang Nguen кода и добавления условного оператора, окончательный код выглядит следующим образом:

if ((!this.filterDepartment) && (!this.filterCategory) && (!this.filterLocation)) { 
    this.collection.reset(jobArray); 
} else { 
    this.collection.reset(jobArray, {silent: true}); 

    var filterDepartment = this.filterDepartment; 
    var filterCategory = this.filterCategory; 
    var filterLocation = this.filterLocation; 

    var filter = {}; 
    if (filterDepartment) { 
     filter['department'] = filterDepartment; 
    } 

    if (filterCategory) { 
     filter['category'] = filterCategory; 
    } 

    if (filterLocation) { 
     filter['location'] = filterLocation; 
    } 

    var filteredResult = this.collection.where(filter); 

    this.collection.reset(filteredResult); 
} 

удалены также «все» значение от выбора опций по умолчанию ,

Смежные вопросы