我想知道Angular中是否有一种简单的方法,可以使用ng-repeat特定的列or(而非逻辑)来过滤表and。现在,当我的过滤器实际上只需要过滤2列数据(ID和Name)时,它就会搜索表中的所有内容(10列以上的数据)。
ng-repeat
or
and
我设法使它仅在过滤时仅查看这两列(通过根据文档在过滤器表达式中使用一个对象并查看此SO答案,但是它使用的是and逻辑,太具体了。我想让它使用or逻辑,但是遇到了麻烦。
我的HTML
<input type="text" ng-model="filterText" /> <table> <tr ng-repeat="item in data"><td>{{ item.id }}</td><td>{{ item.name }}</td>...</tr> </table>
我的过滤逻辑:
$filter('filter')(data, {id:$scope.filterText, name:$scope.filterText})
过滤有效,但同样,它采用了匹配列的交集而不是联合。谢谢!
我想通了-我必须编写自己的自定义过滤器。这是我的解决方案:
var filteredData; filteredData = $filter('filter')(data, function(data) { if ($scope.filter) { return data.id.toString().indexOf($scope.filter) > -1 || data.name.toString().indexOf($scope.filter) > -1; } else { return true; } });