2014-10-16 2 views
0

$ scope.items를 배열과 비교하여 필터링 할 수 있습니까? 결과를 $ scope.itemsfiltered에 넣으시겠습니까? 다음 URL에서는이 모든 내용을 설명합니다 (아래로 스크롤). http://angular-tips.com/blog/2014/08/tip-accessing-filtered-array-outside-ng-repeat/배열 값을 가진 AngularJs 필터

모든 항목을 일부 배열 값과 비교하는 기능을 시도했으며 작동합니다. 결과는 $ scope.itemsfiltered에 할당 할 때가 아니라 $ scope.items에 결과를 지정할 때만 나타납니다.

그래서 A) 위의 같은 (아래 코드)

또는 B) 뭔가 더 간단, 정규식 또는 비교 대상 무언가를보고 ... 그래서 모델 "filtereditem는"필요하지, 그냥 할 : $ scope.filterByRegexOrSomethingElse =/비교 1 | 비교 2 /;

<div class="item" ng-repeat="item in (itemsfiltered = (items | filter:filterByArr))"> 
    {{ title }} 
</div> 

$scope.filterByArray = function() { 
    var arr = ['foo', 'bar']; 

    // do some magic here 
    var filtered = []; 

    for (var i = 0; i < items.length; i++) { 
     // resetScope($scope); 
     if (_.contains(arr, items[i].categorie)) { 
      filtered.push(items[i]); 
     } 
    } 

    $scope.itemsfiltered = filtered; 
}; 
+0

질문은 무엇인가? 배열을 필터링하는 방법 또는'$ scope.itemsfiltered = filtered; '가 작동하지 않는 이유는 무엇입니까? – Surya

+0

어떤 것을 선택하든간에 ... – poashoas

+1

코드 변경시 : itemsfiltered | (itemsfiltered = (items | filter : filterByArr))'항목으로 변경하십시오. filter : filterByArr' 및 시도? – Surya

답변

0
  $scope.filterCategory = function() { 
      if ($(this)[0].category) { 
       if ($scope.categories.indexOf($(this)[0].filter.value) == -1) { 
        $scope.categories.push($(this)[0].filter.value); 
       } 
      } else { 
       var indexToRemove = $scope.categories.indexOf($(this)[0].filter.value); 
       if (indexToRemove != -1) { 
        $scope.categories.splice(indexToRemove, 1); 
       } 
      } 

      $scope.queryFilter = function(item) { 
       return $scope.categories.length ? _.contains($scope.categories, item.categorie) : true; 
      }; 
     };