2013-08-06 6 views
8

У меня есть json полный данных с нижним и верхним. Например:AngularJs, нечувствительный к фильтру

[ 

    { "firstName":"JoHn" , "lastName":"DoE" }, 
    { "firstName":"aNnA" , "lastName":"smIth" }, 
    { "firstName":"PeTer" , "lastName":"JOnes" } 

] 

И у меня есть что-то похожее на это:

Search: <input ng-model="searchText"> 
     <table id="searchTextResults"> 
      <tr><th>Name</th><th>Phone</th></tr> 
      <tr ng-repeat="friend in friends | filter:searchText"> 
      <td>{{friend.firstName}}</td> 
      <td>{{friend.lastName}}</td> 
      </tr> 
     </table> 

То, что я хочу сделать, это найти друга, не глядя на upcases и lowcases. Так что в основном, когда я набираю «Джон», «ДЖОН» или просто «Джон» на моем входе, он должен вернуть моего друга Джона.

Так можно ли применить фильтр, нечувствительный к регистру, к фильтру?

ответ

7

Передайте имя функции filter, которое вы определяете в применимой области, где вы используете строку toLowerCase. См. ngFilter. Подпись функции проста: function (item) { ... }.

Пример JS в контроллере:

$scope.filterOnlyFoo = function (item) { 
    return item == "foo"; 
} 

Пример HTML:

<div data-ng-repeat="item in items | filter: filterOnlyFoo"></div> 

Sample Plunker

+0

Но я не хочу ничего делать или ничего делать. Просто хочу знать, возможно ли без учета регистра. – user2462805

+0

Вам не нужно устанавливать исходное значение в нижний регистр, а только временное значение (например, в выражении) для проверки. Например 'item.toLowerCase() ==" foo "' истинно для "FOO", но не изменяет 'item'. –

+0

И что я должен делать с ng-model на моем входе? – user2462805

18

Существует способ, чтобы включить случай insensetive фильтр:

<div data-ng-repeat="item in items | filter : searchText : false"></div> 

Plunker

+3

Я думаю, что это должно быть правильно, поскольку в https://docs.angularjs.org/api/ng/filter/filter он сказал, что в '{{filter_expression | filter: expression: comparator}} ', если' comparator' = 'false', затем' false | undefined: короткая рука для функции, которая будет искать подстрочное совпадение в случае нечувствительного способа. ' –

+2

@ Александр Васильев: это не на 100% правильнее, так как он пытается сопоставить подстроку нечувствительным к регистру образом, например, в случае, если пользователь выполняет поиск по алфавиту «n», он вернет все записи, поскольку все они имеют «n» в нем, последний атрибут предназначен для строгой математики, если true, это будет точное совпадение, если false, это будет нечувствительная к регистру подстрока –

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