Angular Array.length 和数组迭代的自定义过滤器
Angular Custom Filter on Array.length and Array Iteration
我正在尝试编写一个自定义过滤器,它只会在 table 中显示过滤后的项目。
过滤器
app.filter('status', function() {
return function(input, theStatus) {
var out = [];
for (var i = 0; i < input.length; i++) {
var gem = input[i];
if (gem.status === theStatus)
out.push(gem);
}
return out;
};
});
当我在 ng-repeat="gem in gemList | status: 3"
中使用它时,只会显示带有 gem.status = 3
的宝石。这完全符合预期。
但我还想知道我的 gemList 中有多少 gem 的状态为 3。我以为我也可以 {{ gemList.length | status: 3 }}
,但事实并非如此。有没有办法编写我的过滤器来解决这两个目的?还是我必须为每个案例编写一个唯一的过滤器?
这行得通。
ng-repeat="gem in filteredGems=(gemList | status:3)"
{{filteredGems.length}}
这里发生的是 arr | status: 3 returns 一个应用了过滤器的数组。但是,当您执行 arr.length 时,您使用的不是过滤后的数组,而是导致您出现此问题的原始数组。
我正在尝试编写一个自定义过滤器,它只会在 table 中显示过滤后的项目。
过滤器
app.filter('status', function() {
return function(input, theStatus) {
var out = [];
for (var i = 0; i < input.length; i++) {
var gem = input[i];
if (gem.status === theStatus)
out.push(gem);
}
return out;
};
});
当我在 ng-repeat="gem in gemList | status: 3"
中使用它时,只会显示带有 gem.status = 3
的宝石。这完全符合预期。
但我还想知道我的 gemList 中有多少 gem 的状态为 3。我以为我也可以 {{ gemList.length | status: 3 }}
,但事实并非如此。有没有办法编写我的过滤器来解决这两个目的?还是我必须为每个案例编写一个唯一的过滤器?
这行得通。
ng-repeat="gem in filteredGems=(gemList | status:3)"
{{filteredGems.length}}
这里发生的是 arr | status: 3 returns 一个应用了过滤器的数组。但是,当您执行 arr.length 时,您使用的不是过滤后的数组,而是导致您出现此问题的原始数组。