我试图在单个复选框上的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的链接:
答案 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;
}
答案 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>
显然,这只适用于>0
。对于任何其他场景(例如,>1
),您需要一个自定义过滤器表达式。