当像下面这样在 Angularjs 中定义自定义过滤器时,我会传入我想要过滤的数据集和一个用作过滤器值的数组:
过滤器的调用方式:
<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/