小编典典

用ng-repeat按多列过滤

angularjs

我想知道Angular中是否有一种简单的方法,可以使用ng-repeat特定的列or(而非逻辑)来过滤表and。现在,当我的过滤器实际上只需要过滤2列数据(ID和Name)时,它就会搜索表中的所有内容(10列以上的数据)。

我设法使它仅在过滤时仅查看这两列(通过根据文档在过滤器表达式中使用一个对象并查看此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})

过滤有效,但同样,它采用了匹配列的交集而不是联合。谢谢!


阅读 317

收藏
2020-07-04

共1个答案

小编典典

我想通了-我必须编写自己的自定义过滤器。这是我的解决方案:

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;
  }
});
2020-07-04