2015-10-21 28 views
0

我有这个codepen。我需要更改过滤器后的值'totalItems'。我试图在过滤器内部这样做:如何更改过滤器后的数组变量 - 角度Ui分页

scope.totalItems = scope.filteredlist.length; 

但值不会改变。我读到我应该这样做plnkr(在我的控制器中再次调用过滤器),但我不知道如何使其适应我的代码。

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

回答

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; 

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

+0

好的,很好。但我需要访问控制器内部的变量'results'。有可能的? – robe007

+0

是的,您可以访问控制器中的变量'results'。我试过了,但它暴露了一些其他问题。请参阅我的更新以了解如何让您的'totalItems'变量起作用。 – JoseM

+0

感谢您关注我的问题,但'scope.totalItems = input.length;'不是我想要的,因为最初我需要'scope.totalItems = scope.filteredlist.length;'也许您可以直接看到我的代码笔。 – robe007