2014-10-12 2 views
0

두 입력 상자를 사용하여 사용자 배열을 필터링하고 싶습니다. 다중 입력을 사용하는 AngularJS 필터

내 배열의 구조 :

$scope.users = [{ 
    id: 1, 
    fname: 'Sophia', 
    lname: 'Smith', 
    email: '[email protected]' 
}... 

내 입력 상자가 nameSearch 및 emailSearch이라고합니다. nameSearch를 사용하여 fname 및 lname 특성을 검색하고 동시에 emailSearch를 전자 메일 속성에 적용하려고합니다.

필자는 | filter : nameSearch, 전체 배열 객체를 검색합니다. fname, lname 및 email을 사용하여 검색 만하도록 제한하려고합니다.

내가 설명서를 읽고이

<li ng-repeat="user in users | filter:{fname: nameSearch, lname: nameSearch, email: emailSearch}">{{user.fname + ' ' + user.lname}}</li> 

같은 것을 시도했다 그러나 나는 그것이해야한다고 생각했을 식으로 작동하지 않습니다했습니다.

작동하려면 사용자 지정 필터를 작성해야합니까? 모든 필터를 사용하는 경우

Fiddle

+0

[documentation] (https://docs.angularjs.org/api/ng/filter/filter) 및 특히 'expression' 매개 변수에 대한 설명을 읽었습니까? – Blackhole

답변

0

는, 조합은 모든 검색의 AND입니다.

당신과 함께 기본 검색을 사용할 수

<li ng-repeat="user in users | filter: nameSearch ">{{user.fname + ' ' + user.lname}}</li> 

그것은 검색에 어떤 필드를 검색합니다.

일부 필드를 더 구체적으로 필터링해야하는 경우 OR 논리를 사용하여 해당 작업에 대한 기능을 만들 수 있습니다.

+0

"filter : nameSearch"는 개체의 모든 것을 필터링합니다. 그래서 예를 들어 maidenName이라는 속성이 있다면 필터에도 포함됩니다. nameSearch가 fname 및 lname 필드 만 검색하도록합니다. – mottosson