2014-07-16 5 views
0

연산자 (OR 및 AND)를 사용하여 내 웹 사이트에서 검색하려고합니다. 다음과 같은 배열이 있습니다 :연산자로 AngularJS 검색 입력

$scope.data = ['orange', 'apple', 'banana'] 

나는 입력란에 모델이 있습니다. 사용자가이 입력란에서 "orange OR banana"로 검색 할 수있게하려면 오렌지색과 바나나를 모두 반환해야합니다. 기본적으로 http://angular.github.io/angular-phonecat/step-3/app/과 동일하지만 운영자를 허용하지 않습니다.

이것은 아주 사소한 질문 것으로 보인다 그러나 나는이에 대한 답변이나 작업 예 ... 당신이 제공 한 특정 예에서

+0

이는 지원하려는 쿼리의 복잡성에 따라 다릅니다. 'a 또는 b'와 같은 단순한 어원이라면 'a와 b'는 쉬울 것입니다. 그러나 당신이 'a와 b 또는 c와 (d or e)'를 지원하기를 원한다면 그것은 전체적인 다른 레벨에있을 것입니다. – runTarm

답변

0

, "오렌지 또는 바나나"모두를 찾을 수 "orange AND banana"는 동일한 결과 세트를 리턴합니다. 실제로 여러 토큰이있는 OR 검색처럼 보입니다. 쿼리를 토큰 화하고 데이터 집합 (또는 더 복잡한 항목)과 일치시킵니다.

사용자 지정 식을 사용하여 필요한 일치 작업을 수행 할 수 있습니다. data | filter: findMatch(searchInput)

의 라인을 따라 뭔가 그리고 Plunker

에 범위

$scope.findMatch = function findMatch(query) { 
    return function (item) { 
     //TODO: comparison logic, return true|false 
    } 
} 

예를 들어보기에 기능을 넣어 필터에 대한 자세한 세부 사항에 대한 Angular doc에서보세요.

+0

exanple에서 findMatch 함수는 검색 입력 만 가지므로 어떻게 비교할 수 있습니까? – runTarm

+0

소스 데이터 세트 인'data' 변수가 범위에 정의됩니다. 이 함수는 필요한 비교를 수행하기 위해이 함수에 액세스 할 수도 있습니다. – zumek

+0

'findMatch'는 술어 함수 여야하며 전체 배열이 아닌'data'의 각 요소에 대해 호출 될 것입니다. 어떻게 비교할 현재 요소를 알 수 있습니까? – runTarm