Angularjs 将数组作为参数传递给自定义过滤器

标签 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]] 因此看起来是空的。 有人可以就此事提供指导吗?可以将数组作为自定义过滤器参数传递吗?我错过了什么?

发送。

最佳答案

看起来您可能将 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 变量定义为对象而不是数组,我想您的代码将按您的预期工作。

$scope.filters = {};

关于Angularjs 将数组作为参数传递给自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37188106/

相关文章:

javascript - 清除间隔不起作用

javascript - 将别名与多个过滤器一起使用

javascript - 如何在不破坏 Angular 模型(数组)的情况下过滤它

javascript - AngularJS:我应该使用过滤器将整数值转换为百分比吗?

javascript - 为什么我的 js 不将 php 输出读取为 json

javascript - 创建工厂后看不到数据

angularjs - 如何在不创建过滤器的情况下反转angular js中的数组

javascript - 根据ng-repeat中的条件动态选择angularjs过滤器

angularjs - 如何使用 Angular 访问 $http 中的 XHR?

javascript - ng-repeat in Repeat 不重复嵌套对象 Angular