AngularJS filter 'or' option

김주경·2021년 6월 17일
0

회사 플젝 중에 검색 기능처럼 보이는 기능을 만들어야했다.
다만 검색 조건 필터없이 입력된 검색어를 기준으로
이름, 소속, 사번 중 어느것에라도 해당이 되면 노출 시키는 기능이다.

이걸 그냥 쿼리로 불러오면 갠자니 간딴하지만
입력하면 바로바로 나오게끔 change 이벤트를 걸어줘야 했기 때문에
매번 서블렛에 들락날락 하는건 좀 그랬다.

그래서 이미 불러온 목록에서 추출한 뒤 뿌려줬어야 했는데
무난하게 filter로 거르면 되겠거니 생각했다.
근데 생각을 해보니 filter에 조건을 여러개 걸면 or가 아닌 and로 조건이 걸리지 않는가.
그래서 이 조건들을 하나로 합쳐서 문자열로 만들어서 includes로 걸러야하나 온갖 똥꼬쇼를 하다가
아무리 생각해도 아닌거 같아서 or 조건을 걸수 있지 않나 검색을 해봤다.

역시나 갓택오브플로우 형님들은 방법을 알고 계셨다.

생각보다 매우 간단하다.

기존 $filter 문법은

$filter('filter')(array, expression, comparator, anyPropertyKey)

인데 이 때 expression에 {'KEY' : value}의 형태가 아닌 조건에 맞으면
값을 반환하는 함수를 써주면 된다.

$filter('filter')(test_list, function(test){return test.NAME == 'searchKey' || test.NUM == 'searchKey' || test.DEPART == 'searchKey'} )

위의 예시처럼 쓰면 된다. 이때 includes나 != 조건 등 자유롭게 걸어서 활용하면 된다.

profile
안냐세온

0개의 댓글