Angular JS过滤数字

时间:2013-12-23 21:26:30

标签: angularjs

我有一个像这样的过滤器:

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

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

这样可以正常工作,例如,如果FilterByType值为2,那么它将过滤结果以显示2,22,32,42等。这不是真正的数字比较。它更像是一个string.contains有点事。

知道如何锁定它吗?

3 个答案:

答案 0 :(得分:3)

true作为第三个参数添加到过滤器表达式中以启用严格比较:

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

注意:这需要AngularJS v1.1.3 +

答案 1 :(得分:2)

您可以使用带过滤器的函数,如下所示:

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

然后定义一个可以进行任何比较的函数:

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

这提供了对过滤器的完全控制,并且还有助于防止一些奇怪的行为,输入类型(文本,数字等)与模型中的实际类型不匹配。

答案 2 :(得分:0)

添加:true为我工作。

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

由于