2013-08-06 17 views
8

Ho un json pieno di dati con lowcase e upcase. Per esempio:AngularJs, senza distinzione tra maiuscole e minuscole

[ 

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

] 

E ho qualcosa di simile a questo:

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> 

Quello che voglio fare è quello di cercare un amico senza guardare upcases e lowcases. Fondamentalmente quando digito "John", "JOHN" o semplicemente "john" nel mio input, dovrebbe restituire il mio amico John.

Quindi è possibile applicare un'opzione senza distinzione tra maiuscole e minuscole a un filtro?

risposta

7

Passare un nome di funzione a filter definito dall'utente in un ambito applicabile, in cui si utilizza la stringa toLowerCase. Vedi ngFilter. La firma della funzione è un semplice function (item) { ... }.

Esempio JS nel controller:

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

Esempio HTML:

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

Sample Plunker

+0

Ma non voglio minimizzare o aggiornare nulla. Voglio solo sapere se il case insensibile è possibile. – user2462805

+0

Non è necessario impostare il valore originale in lettere minuscole, ma solo un valore temporaneo (in un'espressione, ad esempio) per eseguire il controllo. Ad esempio 'item.toLowerCase() ==" foo "' è vero per "FOO", ma non altera 'item'. –

+0

E allora cosa devo fare con ng-model sul mio input? – user2462805

18

C'è un modo per trasformare il corpo del filtro insensetive:

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

Plunker

+3

Penso che questo dovrebbe essere quello corretto poiché in https://docs.angularjs.org/api/ng/filter/filter, ha detto che in '{{filter_expression | filter: expression: comparatore}} ', se' comparator' = 'false', quindi' false | undefined: Una mano corta per una funzione che cercherà una corrispondenza di sottostringa in caso insensibile. –

+2

@Alexander Vasilyev: questo non è corretto al 100%, poiché cerca di far corrispondere la sottostringa in modo insensibile, quindi nel suo caso se l'utente cerca con l'alfabeto 'n' restituirà tutti i record poiché tutti hanno 'n' in esso, l'ultimo attributo è per la matematica rigorosa, se è vero sarà la corrispondenza esatta se falso sarà la corrispondenza di sottostringa maiuscole e minuscole –

Problemi correlati