2017-02-14 4 views
2

네,보기는 쉽지만 보이지는 않습니다.각도 반복 필터 : ¿ 필터 필드를 지정하는 방법은 무엇입니까?

간단히 각도 필터를 수행하고 싶지만 필터에서 사용할 배열의 필드를 지정해야합니다.

기초적 필터는 다음과 같습니다

<li ng-repeat="person in app.people | filter: app.search"> 

1 필드 필터는 다음과 같습니다

<li ng-repeat="person in app.people | filter: {Surname: app.search}"> 

내가 지정할 수있는 방법 하나 이상의 필드 필터? 뭔가 같은 :

<li ng-repeat="person in app.people | filter: {Name,Surname: app.search}"> 
다음

기본 필터와 한 필드 필터와 Plunker :이 경우 https://jsfiddle.net/odLz1v71/3/

답변

2

, 나는 당신이이 같은 컨트롤러에 필터 기능을 추가 제안 :

vm.searchFilter = function(item){ 
    // Add your own search logic here 
    return item.Name.includes(vm.search) || item.Surname.includes(vm.search); 
} 

그리고는 다음과 같이 사용 :

<li ng-repeat="person in app.people | filter: app.searchFilter"> 
+0

좋아, Angular가 기본적으로이 동작을 사용하지 않는다는 것을 믿을 수 없습니다.이 필터 함수를 사용 하겠지만, toLowerCase()를 속성과 검색 값에 모두 추가 할 것입니다. Tks 많이. –

+0

Angular 팀은 필터링에 대한 모든 유스 케이스를 예측하거나 포함 할 수 없으며, 이는 너무 가파른 학습 곡선을 가진 새로운 프레임 워크 사용자를 혼란스럽게하고 혼란스럽게 만듭니다. –

+0

'toLowerCase()'를 추가하는 것이 좋습니다. 그것은 "// 자신 만의 검색 논리를 여기에 추가하십시오"라는 주석의 의미입니다. :-) –

0

내가 할 직접 기본 필터를 사용하여이 작업을 수행 할 수 있다고 생각하지만, filter 필터가 당신을 위해이 검사를 할 것을 사용하는 당신은 기능을 제공 할 수 없습니다 :

vm.checkName = function (value) { 
    return value.Name.indexOf(vm.search) > -1 || value.Surname.indexOf(vm.search) > -1; 
    }; 

참조 : https://jsfiddle.net/odLz1v71/4/