我想过滤掉数量少于1的所有对象,并且我必须制作自定义过滤器才能实现这一目标。我希望问题比自定义过滤器更简单。
以下将不工作:
<tr ng-repeat="product in products | filter: {quantity: '!0'}">
除了0之外,这将过滤10,20等等。
我最终使用了这个自定义过滤器:
app.filter('quantityFilter', function() {
return function( products) {
var filtered = [];
angular.forEach(products, function(product) {
if(product.quantity > 0 ){
filtered.push(product);
}
});
return filtered;
};
});
HTML:
<tr ng-repeat="product in products | quantityFilter">
对此有更平滑的解决方案吗?喜欢(不起作用):
<tr ng-repeat="product in products | filter: {quantity: >0}">
答案 0 :(得分:2)
您可以为过滤器使用谓词函数,而不是编写单独的过滤器。这在AngularJS documentation中有详细描述。
所以对你来说这就变成了:
<tr ng-repeat="product in products | filter:noZeroQuantity">
并在控制器中:
$scope.noZeroQuantity = function(value, index, array) {
return value.quantity !== 0;
}
我在jsfiddle中写了一个例子。