2014-10-16 3 views
0

можно ли фильтровать $ scope.items, сравнивая их с массивом? И положил результат в $ scope.itemsfiltered? Следующий url объясняет все это (прокрутка вниз): http://angular-tips.com/blog/2014/08/tip-accessing-filtered-array-outside-ng-repeat/Фильтр AngularJs с массивом значений

Я пробовал функцию, которая сравнивала все элементы с некоторыми значениями массива и работает. Но результат появляется только тогда, когда я присваиваю результат $ scope.items, а не когда я назначаю его $ scope.itemsfiltered.

Итак А) что-то, как и выше (см код ниже)

или б) что-то более простое, регулярное выражение или что-то сравнить с ... поэтому модель «filtereditem» не надо, а просто сделать: $ scope.filterByRegexOrSomethingElse =/compare1 | compare2 /;

<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 = filter;' не работает? – Surya

+0

Сделайте свой выбор, независимо от того, что работает ... – poashoas

+1

В вашем изменении кода: 'item in (itemsfiltered = (items | filter: filterByArr))' to 'item в itemsfiltered | фильтр: 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; 
      }; 
     };