AngularJs: как избежать использования casecase при фильтрации

0

СИТУАЦИЯ:

Я должен был сделать свой собственный фильтр, вместо использования обычного углового фильтра, из-за конкретной ситуации:

У меня есть вложенный объект на четырех уровнях: Программы - Дни - Залы - Презентации. Каждый зал представляет собой аккордеон, содержащий относительные презентации.

В любом случае фильтр, который я сделал, работает правильно.

Кроме одного: прямо сейчас фильтр является буквенным регистром.

Поэтому, если имя презентации - "Автоматизация", а тип пользователя - "автоматизация", он не будет отображаться в результатах.

КОД:

Прямо сейчас ищет простой 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);
    }

}); 

ВОПРОС:

Вы знаете, как я могу избежать случая с письмом при фильтрации?

Спасибо!

Теги:
angularjs-filter

2 ответа

2
Лучший ответ

Вы можете использовать toLowerCase для обеих строк:

var index = name.toLowerCase().indexOf($rootScope.filter.name.toLowerCase());

1

Один из способов добиться этого - использовать преобразование как 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"));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню