simple过滤掉具有特定属性的对象整数值angular

时间:2016-09-22 08:38:46

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

我想过滤掉数量少于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}">

1 个答案:

答案 0 :(得分:2)

您可以为过滤器使用谓词函数,而不是编写单独的过滤器。这在AngularJS documentation中有详细描述。

所以对你来说这就变成了:

<tr ng-repeat="product in products | filter:noZeroQuantity">

并在控制器中:

$scope.noZeroQuantity = function(value, index, array) {
    return value.quantity !== 0;
}

我在jsfiddle中写了一个例子。