2014-11-02 1 views
0

지금 당분간 이것을보고 있습니다. angularjs filter (not working)에 대한 stukennedy의 대답은 여러 가지 일을하는 데 도움이되었습니다. 이제 더 많은 기능을 사용하는 데 문제가 있습니다. 정수로 들어오는 데이터를 필터링하려고하는데 필터가 작동하지 않습니다. HTML 값이 문자열을 제공하고 있기 때문에 가정하고 있습니다. 데이터는 API에서 들어오는되기 때문에 내가 잡하고있는 데이터에 제어 할 수 없습니다각도로 정수로 작업하기위한 objFilter를 얻는 방법

<ul class="items"> 
      <li ng-repeat="item in items | objFilter:objects" > 
      </li> 
     </ul> 

그리고 objFilter

app.filter('objFilter', function() { 
    return function(items, filter) { 
     if (!filter){ 
      return items; 
     } 
     var result = {}; 
     angular.forEach(filter, function(filterVal, filterKey) { 
      angular.forEach(items, function(item, key) { 
       var fieldVal = item[filterKey]; 
       if (fieldVal && fieldVal.toLowerCase().indexOf(filterVal.toLowerCase()) > -1){ 
        result[key] = item; 
       } 
      }); 
     }); 
     return result; 
    }; 
}); 

:

<select ng-model="objects.level"> 
      <option value="">All</option> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option> 
      <option value="4">4</option> 
      <option value="5">5</option> 
      <option value="6">6</option> 
      <option value="7">7</option> 
      <option value="8">8</option> 
      <option value="9">9</option> 
      <option value="10">10</option> 
     </select> 

는 또한 내 데이터가 어디에 . 같은 목록에 objFilter를 아무런 문제없이 문자열 값으로 사용하고 있습니다. 누구든지 올바른 방향으로 나를 가리켜 주시겠습니까?

+0

그냥 제안 : typeof'fieldVal'에 따라 if-else를 수행 할 수 있습니다. – harishr

답변

1

"항목"개체에 대한 일부 데이터뿐만 아니라 "개체"개체도 보지 않고도 문제가 무엇인지 이해하는 것이 정말 좋습니다.
즉, 사용자 정의 필터의 일부 포트를 사용하여 예제 Here을 만들었지 만 "선택"구성 요소가 항목의 "레벨"속성을 필터링하는 것이 더 간단합니다.
기본적으로 사용자 지정 필터는 "개체"값을 반복하고 필터의 모든 특성에 응답하는 항목의 모든 값을 필터링합니다.
그래서이 속성의 값이 "수준"이기 때문에 당신은 구성 요소에 하나를 선택하는 경우 : 그 수준이기 때문에

{name:"bla", level:1} 

:

<select ng-model="objects.level"> 

최종 값은 첫 번째 항목을 선택합니다은 객체의 값과 같습니다.

내가 그것을 이해하는 데 도움이된다고 생각하는 예제를 보아라. 행운을 빈다!

+0

이것은 거의 완벽합니다. 도와 주셔서 감사합니다. 나는 여전히 앵귤러 (Angular) 주위에서 머리를 터트려하고있다. ALL을 선택하면 모든 항목을 반환 할 수 있도록 추가해야하는 항목은 무엇입니까? 어떻게 든 다른 진술을 상상할 수 있을까요? – DragoonKmesh

+0

나는 그것을 작동 시켰어 :) 고마워. – DragoonKmesh