AngularJs使用值数组进行过滤

时间:2014-10-16 08:34:54

标签: angularjs filter

是否可以通过将它们与数组进行比较来过滤$ scope.items?并将结果放在$ scope.itemsfiltered中? 以下网址解释了所有内容(向下滚动):http://angular-tips.com/blog/2014/08/tip-accessing-filtered-array-outside-ng-repeat/

我尝试过一个功能,将所有项目与一些数组值进行比较,然后才有效。 但结果只会在我将结果分配给$ scope.items时显示,而不是在我将其分配给$ scope.itemsfiltered时。

所以A)类似于上面的内容(见下面的代码)

或者B)更简单的东西,正则表达式或者可以比较的东西...所以模型"过滤主题"没有必要,只需:$ 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;
};

1 个答案:

答案 0 :(得分: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;
            };
        };