2017-03-28 2 views
1

ng-repeat의 데이터 필터링과 관련하여 도움이 필요합니다. 나는 몇 가지 일을하려했지만 내 경우에는 효과가있는 해결책을 찾을 수 없습니다. 나는 이런 식으로 뭔가를하기 위해해야 ​​ng-repeat의 다중 필터

sensor in sensors | filter: { group: group.id, (name: search || description: search) } 

검색 (텍스트 입력) ng-model하고 group.idng-repeat에 genereted하는 그룹의 ID입니다 (나는 두 개의 중첩 NG 반복이). 필터를 사용하려고했습니다 :

$scope.search = ''; 
    $scope.searchFilter = function() { 
     return function (p) { 
      if ($scope.search!='') { 
       for (var i in p) { 
        console.log("p.name: "+p.name+", search: "+$scope.search); 
        if (p.name == $scope.search || p.description == $scope.search) { 
         return p; 
        } 
       } 
      } else { 
       return p; 
      } 

     } 
    } 

거의 작동합니다. 올바른 이름을 쓰는 경우에만 내 데이터를 필터링합니다. 예를 들어 나는 "엔진"을 찾고 싶다. "en"을 쓰기 시작하면 데이터가 없지만 "engine"이라고 쓰면 올바른 데이터가 표시됩니다. 그래서 나는 그것에 대해서도 작업해야합니다. 내가하고 싶은 것을 당신이 이해하기를 바랍니다.

답변

2

해결책을 찾았습니다.

sensor in sensors filter: { group: group.id } | filter: searchFilter() 

그리고 이것은 :

$scope.search = ''; 
$scope.searchFilter = function() { 
    return function (p) { 
     if ($scope.search!='') { 
      for (var i in p) { 
       var re = new RegExp($scope.search, 'i'); // This I've add 
       if (p.name.match(re) || p.description.match(re)) { // This I've change 
        return true; 
       } 
      } 
     } else { 
      return true; 
     } 

    } 
} 
+0

U가 불필요한 기능 래퍼가 ... –