AngularJS过滤器不会过滤等于0的值

时间:2015-03-24 12:48:09

标签: angularjs angular-filters

我有以下搜索输入:

<input type="text" ng-model="search.Kkz">

我有以下ng-repeat:

<tr class="ListItem" ng-class-odd="'Odd'" ng-class-even="'Even'"
        ng-repeat="item in Prios | filter:search | filterMultiple:{Sprache:spracheSelectedItem} | orderBy:predicate:reverse | startFrom:currentPage*pageSize | limitTo:pageSize"
        ng-click="setSelectedRow(item)" ng-class="{'Selected': item == selectedRow}">

目前Kkz字段可以有2个值(3000和0)。当我搜索数字3000时,它返回一个正确的列表。但是当我搜索价值&#34; 0&#34;没有任何反应,好像它在我正在搜索的表格列中找不到该值。

2 个答案:

答案 0 :(得分:1)

默认情况下,过滤器会查找不区分大小写的子字符串匹配项。在这里它找到3000在3000以内,所以3000和0匹配。

对于简单的字符串数组,您可以使用filter:search:true,在这种情况下,搜索是一个对象,创建自己的比较器可以提供帮助:

在HTML中添加比较功能的名称:

... | filter:search:compare | ...

在控制器中:

$scope.compare = function (actual, expected) {
  // !expected: All records pass when no search value is specified.
  // == instead of ===: Coerce the numbers from the array into strings to 
  //                    properly compare to the string from the input. 
    return (!expected || actual == expected);
};

答案 1 :(得分:0)

当你说什么都没发生时。你到底什么意思?你仍然得到相同的结果或没有结果吗?

是不是因为当你用过滤器搜索0时它也匹配3000?

示例:

<!doctype html>
<html lang="en">
<head>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.6/angular.min.js"></script>
</head>
<body ng-app="">
  <div ng-init="values = [0,555,3000]"></div>

Search: <input ng-model="searchText">
<ul ng-repeat="value in values | filter:searchText">
  <li>{{value}}</li>
</li>
</table>
</body>
</html>

请参阅http://plnkr.co/edit/CEt6XKP5ylQtXc2hhsx4?p=preview了解相关工作示例。

如果不是这种情况,请发布更多代码。