过滤后如何更改数组变量 - Angular Ui Pagination

时间:2015-10-21 00:57:21

标签: javascript angularjs pagination angular-ui

我有codepen。我需要在过滤器后更改 'totalItems' 的值。我试图在过滤器中这样做:

scope.totalItems = scope.filteredlist.length;

但价值没有变化。我读到我应该做这样的事情plnkr(在我的控制器内再次调用过滤器),但我不知道如何使其适应我的代码。

PS:要测试过滤器,请尝试在搜索框中输入内容,例如 'o'

1 个答案:

答案 0 :(得分:1)

您可以使用语法item in items | filter:x as results

将过滤后的数组的结果存储在变量中
  

variable in expression as alias_expression - 您还可以提供一个可选的?>别名表达式,该表达式将在应用过滤器后存储转发器>的中间结果。通常,这用于在转发器上的过滤器处于活动状态时呈现特殊的>消息,但过滤的结果集为>空。

     

例如:item in items | filter:x as results会将>重复项目的片段存储为结果,但只有在通过>过滤器处理完项目后才会存储。

然后,您可以使用{{results.length}}来获取已过滤结果的长度。

https://code.angularjs.org/1.3.10/docs/api/ng/directive/ngRepeat

在更详细地查看笔之后,只需在代码中进行一行更改即可获得示波器中的totalItems值。在您的分页过滤器中,您正在执行

scope.totalItems = scope.filteredlist.length;

但是您想要的长度实际上是input,所以如果您将其更改为此,那么totalItems将具有您期望的值

scope.totalItems = input.length;

我不喜欢这个解决方案,因为你最终会在分页过滤器中污染其他范围,但它会给你答案。 (我现在需要更多时间来提出一个更清洁的解决方案)