2013-08-06 76 views
8

Tôi đã có một bộ dữ liệu đầy đủ với chữ thường và chữ hoa. Ví dụ:AngularJs, bộ lọc phân biệt chữ hoa chữ thường

[ 

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

] 

Và tôi đã có một cái gì đó tương tự như sau:

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> 

Những gì tôi muốn làm là để tìm kiếm một người bạn mà không nhìn vào upcases và lowcases. Vì vậy, về cơ bản khi tôi gõ "John", "JOHN" hoặc chỉ đơn giản là "john" trong đầu vào của tôi, nó sẽ trả về người bạn của tôi John.

Vì vậy, có thể áp dụng tùy chọn không phân biệt chữ hoa chữ thường cho bộ lọc?

Trả lời

7

Chuyển tên hàm đến filter mà bạn xác định trên phạm vi áp dụng, nơi bạn sử dụng chuỗi toLowerCase. Xem ngFilter. Chữ ký hàm là một đơn giản function (item) { ... }.

Ví dụ JS trong điều khiển của bạn:

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

HTML mẫu:

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

Sample Plunker

+0

Nhưng tôi không muốn viết hoa hay viết hoa gì cả. Chỉ muốn biết nếu không phân biệt chữ hoa chữ thường là có thể. – user2462805

+0

Bạn không phải đặt giá trị ban đầu thành chữ thường, chỉ có giá trị tạm thời (trong một biểu thức ví dụ) để thực hiện việc kiểm tra. Ví dụ 'item.toLowerCase() ==" foo "' là đúng cho "FOO", nhưng không thay đổi 'mục'. –

+0

Và những gì tôi đã làm với ng-model trên đầu vào của tôi sau đó? – user2462805

18

Có một cách để bật trường hợp bộ lọc insensetive:

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

Plunker

+3

Tôi nghĩ rằng điều này nên là một trong những chính xác kể từ trong https://docs.angularjs.org/api/ng/filter/filter, nó nói rằng trong '{{filter_expression | filter: expression: comparator}} ', nếu' so sánh' = 'false', thì' false | undefined: Một tay ngắn cho hàm sẽ tìm kiếm một chuỗi con khớp trong trường hợp không nhạy cảm.' –

+2

@Alexander Vasilyev: this không chính xác 100% vì nó cố khớp chuỗi con trong trường hợp không nhạy cảm, ví dụ trong trường hợp của người dùng tìm kiếm với bảng chữ cái 'n', nó sẽ trả về tất cả các bản ghi vì tất cả chúng có 'n' trong đó, thuộc tính cuối cùng là dành cho toán học nghiêm ngặt, nếu đúng, nó sẽ là đối sánh chính xác nếu sai nó sẽ là trường hợp chuỗi con không nhạy cảm –