当前位置: 首页 > 面试题库 >

用ng-repeat按多列过滤

窦弘义
2023-03-14
问题内容

我想知道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})

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


问题答案:

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

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;
  }
});


 类似资料:
  • 问题内容: 我有许多产品要重复使用ng-repeat,并且正在使用 按颜色过滤这些产品。过滤器正在运行,但是如果产品名称/说明等包含颜色,则在应用过滤器后该产品仍然存在。 如何将滤镜设置为仅应用于数组的颜色字段而不是每个字段? 问题答案: 请参阅过滤器页面上的示例。使用一个对象,并在color属性中设置颜色:

  • 问题内容: 我正在尝试通过键入日期范围来过滤包含时间戳的列表 例如: JSFIDDLE html javascript 我希望能够用值填充“发件人”字段:27-05-2010 并且“ To”字段的值为:29-07-2015 并仅获取该范围内的记录。 (示例中的第一条记录)。 谢谢分配阿维 问题答案: 您可以创建一个自定义过滤器来实现此目的。 JSFIDDLE html javascript 此外,

  • 问题内容: 我有一些关于jsfiddle的演示: HTML: JavaScript: 输入更改(甚至复选框)时,将调用日志过滤器。 仅当文本输入更改时,如何更改它并触发日志过滤器? 问题答案: 这是因为即使范围中的一个变量发生更改,Angular也会运行并更新所有范围属性。这称为“脏污检查”。 了解有关角度工作原理的更多信息:http : //www.sitepoint.com/understan

  • 问题内容: 有没有什么好方法可以使用angular过滤列表而不使用ng- repeat?我不想首先使用javascript绘制列表,但是之后我想使用angular对其进行过滤。 例: 我想使用搜索框来过滤现有的html。 (一般请不要使用ng-repeat或jQuery给出任何示例) 问题答案: 您可以编写一个简单的指令来处理显示/隐藏: 并以这种方式使用它: 使用指令有两个好处: 1)。您不必在

  • 问题内容: 我正在开发一个页面,我需要在其中显示一些框(使用),其中包含频道信息以及显示位置(城市)。 我面临的问题是当我重复第二遍时: 这应该获得第一个ng-repeat的$ index值,并使用显示频道的位置创建一个新数组。它确实做到了。但是,当我使用此数组应用第二个ng- repeat时,它无法正常工作。 说我的html看起来像这样(PS:我需要使用索引值而不是因为我将这些框放到列中) JS

  • 问题内容: jsfiddle http://jsfiddle.net/KfSBq/ 所谓子对象,是指我用ng-repeat显示的所有对象在其内部都包含一个对象列表,并且我希望根据这些子对象之一的属性进行过滤。 仅此一项就非常简单。我有个对象,每个对象都包含和对象列表: 我按类别显示它们: 我的问题是现在仍然显示不包含任何条目的日常对象。如何实现一种情况,如果过滤使列表为空,则该列表也不显示? 问题