表达式上的angularjs复选框筛选器

表达式上的angularjs复选框筛选器,angularjs,angularjs-ng-repeat,angularjs-filter,Angularjs,Angularjs Ng Repeat,Angularjs Filter,我正在尝试筛选我的ng repeat on单个复选框中的值是否大于0,因此我希望能够做到这一点: <input type="checkbox" ng-model="filter.uid" ng-true-value=">0" ng-false-value="0">filter if uid > 0 但是,ng真值和ng假值不接受表达式。。。所以我猜我需要创建一个自定义过滤器?这看起来应该很琐碎,但我只是想检查一下我是否遗漏了什么 这里有一个指向我的JSFIDLE的链接:

我正在尝试筛选我的ng repeat on单个复选框中的值是否大于0,因此我希望能够做到这一点:

<input type="checkbox" ng-model="filter.uid" ng-true-value=">0" ng-false-value="0">filter if uid > 0
但是,ng真值和ng假值不接受表达式。。。所以我猜我需要创建一个自定义过滤器?这看起来应该很琐碎,但我只是想检查一下我是否遗漏了什么

这里有一个指向我的JSFIDLE的链接:


由于true-/false值已分配给model filter.uid,因此无法使用值>0

您可以将复选框值存储在变量中,例如filterActive,并在ngRepeat中使用筛选函数:

$scope.filter = function(entry) {
    if($scope.filterActive) {
        return (entry.uid > 0) ? true: false;
    }
    return true;
}
查看fork:

内置过滤器只支持谓词的否定。如果您的数字从不为负数,则可以过滤非0:


显然,这只适用于>0的情况。对于任何其他场景,例如,>1您将需要一个自定义筛选器表达式。

谢谢Sebastian,这很有效!但是,单击clearFilter后,它会中断,因此现在尝试修复:-/如果要使用多个筛选器选项,请像以前一样将它们保存到自己的变量中,例如$scope.filterOptions,并将逻辑添加到筛选器函数中。
<input type="checkbox" ng-model="filter.uid" 
       ng-true-value="'!0'" ng-false-value="">

<div ng-repeat="project in projects | filter: filter></div>