СИТУАЦИЯ:
Я должен был сделать свой собственный фильтр, вместо использования обычного углового фильтра, из-за конкретной ситуации:
У меня есть вложенный объект на четырех уровнях: Программы - Дни - Залы - Презентации. Каждый зал представляет собой аккордеон, содержащий относительные презентации.
В любом случае фильтр, который я сделал, работает правильно.
Кроме одного: прямо сейчас фильтр является буквенным регистром.
Поэтому, если имя презентации - "Автоматизация", а тип пользователя - "автоматизация", он не будет отображаться в результатах.
КОД:
Прямо сейчас ищет простой indexOf строки, введенной пользователем внутри имени презентации:
angular.forEach(value_halls.presentations, function(presentation_info, key_presentation)
{
var name = presentation.name;
var index = name.indexOf($rootScope.filter.name);
if (index > -1 )
{
$rootScope.program_list_filtered.push(presentation_info);
}
});
ВОПРОС:
Вы знаете, как я могу избежать случая с письмом при фильтрации?
Спасибо!
Вы можете использовать toLowerCase
для обеих строк:
var index = name.toLowerCase().indexOf($rootScope.filter.name.toLowerCase());
Один из способов добиться этого - использовать преобразование как String to Upper Case, так и следующее:
var name = presentation.name.toUpperCase();
var index = name.indexOf($rootScope.filter.name.toUpperCase());
Другой способ - использовать Regex
var name = presentation.name;
var index = name.match(new RegExp($rootScope.filter.name, "i"));