2013-12-23 137 views
2

我有一个过滤器,像这样:角JS过滤数

<tr ng-repeat="c in CategoryList | filter: {CategoryOption.CategoryOptionID: FilterByType}"> 

值:FilterByType被从未示出的下拉列表中设置。

这工作得很好,除非FilterByType的值是2,例如,那么它会过滤结果以显示2,22,32,42等。它不是真正的数字比较。它更像一个字符串。包含有点儿东西。

任何想法如何锁定它?

回答

2

您可以使用函数像这样的过滤器:

<tr ng-repeat="c in CategoryList | filter: myCustomFilter"> 

然后定义一个函数来做你想要的任何比较:

$scope.myCustomFilter = function(element) { 
    if ($scope.FilterByType) { 
     return element.number === parseInt($scope.FilterByType); 
    } 
    return true; 
} 

这提供了完全控制的过滤器,也将有助于防止输入类型(文字,数字等)不匹配模型的实际类型的一些怪异的行为。

+0

完美工作。谢谢! – AnthonySG

3

添加true作为第三个参数来筛选表达式中启用严格的比较:

<tr ng-repeat="c in CategoryList | filter: {CategoryOption.CategoryOptionID: FilterByType}:true"> 

注:这需要AngularJS V1.1.3 +

+0

之前,这个方法我试过,但继续得到同样怪异的行为。 – AnthonySG

0

添加:true为我工作。

ng-repeat="proj in projectList | filter: {ID: project.p_id} :true" 

感谢