angularjs复选框过滤表达式

时间:2015-04-11 19:19:40

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

我试图在单个复选框上的ng-repeat中过滤值是否大于0,所以我希望能够这样做:

<input type="checkbox" ng-model="filter.uid" ng-true-value=">0" ng-false-value="0">filter if uid > 0

但是,ng-true-value和ng-false-value不接受表达式......所以我猜我需要创建一个自定义过滤器?这似乎应该是微不足道的,但我只是想检查一下我是否遗漏了什么......

这是我的jsFiddle的链接:

https://jsfiddle.net/webmastersean/4m2d5n8u/39/

2 个答案:

答案 0 :(得分:0)

由于true / false值已分配给您的模型filter.uid,因此无法使用值“&gt; 0”。

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

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

查看前叉:https://jsfiddle.net/49qgbdk6/

答案 1 :(得分:0)

内置filter过滤器仅支持对谓词的否定。如果您的号码从不为负数,则可以过滤“不0”:

<input type="checkbox" ng-model="filter.uid" 
       ng-true-value="'!0'" ng-false-value="">

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

Demo

显然,这只适用于>0。对于任何其他场景(例如,>1),您需要一个自定义过滤器表达式。