【问题标题】:Multiple filters for ng-repeat with track by用于 ng-repeat 的多个过滤器,带有 track by
【发布时间】:2014-12-14 16:55:15
【问题描述】:

我有一个带有过滤器的 ng-repeat,如下所示。出于某种原因,它在网络服务器中不起作用,我认为这是因为浏览器 DOM 中不允许重复项目,所以我不得不输入“按 item.id 跟踪”。请看下面的代码。

<div ng-repeat="item in items | filter:search:date | filter:filterFrontPage track by item.id">

上面的代码唯一的问题是没有通过“filterFrontPage”过滤器加载项目,它从项目中过滤布尔值。当我将其更改为以下内容时,整个事情都可以正常工作:

<div ng-repeat="item in items | filter:search:date track by item.id">  

因此,使用上述方法,我将如何再添加一个过滤器来过滤变量中的布尔值。我似乎无法通过使用“filter:search:date:{isActive:true}”来完成这项工作。请让我知道可以做些什么来使其正常工作。

更新 1:

我已经删除了我很久以前使用的“日期”。 “搜索”适用于以下内容,效果很好。

<input class="form-control" type="text" placeholder="Search posts" ng-model="search.$" />

理想情况下,filterFrontPage 被编写为通过 isActive 变量 true/false 过滤项目;

【问题讨论】:

  • 你有机会吗?
  • 这是我现在拥有的一个大项目,我没有使用 plunkr。您能否确定为什么这种过滤器不起作用?
  • 这些过滤器似乎都不对。我怀疑date 是比较器或filterFrontPagestringObjectfunction 之一。
  • 在帖子中查看我的更新 1。

标签: angularjs angularjs-ng-repeat angular-filters


【解决方案1】:

我认为您需要在过滤后的集合周围使用括号,即:

<div ng-repeat="item in (items | filter:search:date) track by item.id">

【讨论】:

  • 非常感谢。但是为什么当我像这样添加它时“item in (items | filter:search:{isFrontPage:true}) track by $index”,这个方法在这里不被叫。 app.filter('filterFrontPage', function () { return function (items) { console.log('hello'); } });
  • 如果您可以为此提供一个小提琴/plunk,您可以获得更多帮助。
  • 好的,使用您的代码,我将如何过滤项目中的布尔值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 2018-03-18
  • 1970-01-01
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
  • 2016-09-08
相关资源
最近更新 更多