javascript - 简单过滤掉具有特定属性整数值 Angular 对象

标签 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}">

最佳答案

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

所以对你来说这变成了:

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

在 Controller 中:

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

我在jsfiddle中写了一个例子.

关于javascript - 简单过滤掉具有特定属性整数值 Angular 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39634148/

相关文章:

javascript - 无法使用 React 从子组件调用父组件中的函数

javascript - 使用 JavaScript 定位时元素的位置不在预期位置

Javascript 集 : any way to override comparison between elements?

jquery - 哪个是移动应用程序 jquery 或 angularjs 的最佳 js 库?

javascript - AngularJS 模块分离无法正常工作

javascript - ng-repeat Angular 中每个数据有不同的表行

javascript - 我可以使用 ASP.NET WebForms 母版页在每个内容页中包含不同的 javascript/css 文件吗?

javascript - AngularJS:表单提交后保留下拉选项

javascript - angularjs ng-repeat过滤器基于点击时的数组值

javascript - 使用多个 ng-model 推送选中的复选框值