Angularjs将数组作为参数

时间:2016-05-12 13:16:38

标签: angularjs angularjs-ng-repeat angularjs-filter

在Angularjs中定义自定义过滤器时,如下所示我传入数据集我希望过滤并使用数组作为过滤器值:

切换数组中传递的按钮状态 enter image description here

传递给过滤器的参数数组值 enter image description here

如何调用过滤器:

<div class="row" ng-repeat="item in data | filterStats:filters">

自定义过滤器通过过滤ng-repeat中的数据集来检查数组中的哪些值应该应用。

   .filter('filterStats', function () {
        return function (items, paramArray) {
        var isFilterEmpty = true;
            angular.forEach(paramArray, function (value, key) {
            if (value == 0) {
                isFilterEmpty = false;
            }
        });

        if(!isFilterEmpty) 
        //More logic
   }
}

问题:问题是数组参数似乎无法使用自定义过滤器内的forEach循环。参数数组显示[Array[0]]因此似乎为空。 有人可以就此事提供指导吗?可以将Array作为自定义过滤器参数传递吗?我错过了什么?

Tx.

1 个答案:

答案 0 :(得分:2)

看起来您可能正在将filters定义为数组,但它正在像对象一样使用它。

您没有在数组中放置任何索引,因此它是空的。通过执行filters.Limited = '-1',这会将命名属性添加到数组中,但数组的实际长度仍为0.

var a = [];
a.length; // 0
a.something = '123';
a.length // still 0
a[0] = '456';
a.length; // now 1

相反,如果您将filters变量定义为Object而不是Array,我想您的代码将按预期工作。

$scope.filters = {};