【问题标题】:Length of query-filtered ng-repeat data before limitTo filterlimitTo 过滤器之前查询过滤的 ng-repeat 数据的长度
【发布时间】:2015-10-05 01:39:48
【问题描述】:

根据this question 接受的答案,如果我想显示过滤后的 ng-repeat 数据的长度,我会这样做:

<div ng-repeat="person in filtered = (data | filter: query)">
</div>

显示结果数:

Showing {{filtered.length}} Persons

我的问题是,当我还使用limitTo 过滤器时,我将如何使用那个简单的查询过滤器显示数据的长度:

<div ng-repeat="person in data | filter: query | limitTo: itemsPerPage">
</div>

需要明确的是,如果 data | filter: query 和 itemsPerPage = 10 产生 100 个项目,那么在我的情况下,我希望 filtered.length 为 100,而不是我从中得到的 10:

<div ng-repeat="person in filtered = (data | filter: query) | limitTo: itemsPerPage">
</div>

有没有办法从链中较早的过滤中获取过滤结果的长度,同时仍沿链应用更多可能影响过滤结果长度的过滤器?

【问题讨论】:

  • 我不明白limitTo 在您的示例中应该如何工作。如果过滤的结果数量高于限制,那么您要全部显示它们吗?这没有意义
  • 这是我做分页的方式;这不是我的完整代码,但它抓住了我需要的本质。我想要查询过滤器出来的结果的长度值,但最终只会显示这些结果中的itemsPerPage
  • 你的最后一次尝试应该达到你想要的结果
  • 这是你需要的吗:jsfiddle.net/w3ysafo2/7 ?

标签: javascript angularjs angularjs-ng-repeat


【解决方案1】:

我需要同样的东西,很惊讶没有人回答这个问题......但你的最后一次尝试让我成功了 90%,它只需要一对额外的括号:

<div ng-repeat="person in (filtered = (data | filter: query)) | limitTo: itemsPerPage">
</div>

要获得最终列表,我们可以使用别名:

<div ng-repeat="person in (filtered = (data | filter: query)) | limitTo: itemsPerPage as visibleItems">
</div>

filtered 将包含整个过滤列表,visibleItems 将仅包含应用 limitTo 后可见的列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    相关资源
    最近更新 更多