【发布时间】:2014-04-28 04:24:20
【问题描述】:
基本上,我想在指令中使用来自重复的过滤列表,如下所示:
<tr ng-repeat="emp in (filteredList = (data.employees | filter:searchString))">
...
<ms-pager items="filteredList" skip-items="skipItems"></ms-pager>
我创建了一个 plunker here 来说明问题。当您输入搜索字符串时,例如J,过滤器工作正常,但出现以下错误:
错误:[$rootScope:infdig] 达到 10 个 $digest() 迭代。中止!
正如我所想,这是因为我将过滤列表传递给了我的 ms-pager 指令。如果我不使用此指令,一切正常。那么,这是指令中的错误,还是指令中的限制,还是我的代码错误?
请注意,该指令有效,只是让我感到困扰的是浏览器控制台中出现了如此多的错误。
【问题讨论】:
-
我预感您的
digest()问题是由于filteredList在ng-repeat中的分配。尽管如此,我还是破解了一个替代解决方案,您在控制器中观看searchString,然后使用$filter在控制器内部进行过滤,而不是ng-repeat表达式。给你 - plnkr.co/edit/sSgtQQEqyU1HrWTlzKj3?p=preview -
非常感谢您提出的解决方法。实际上,我已经找到了解决方法,但是这个问题确实困扰着我,因为我怀疑我在其他地方也遇到过类似的问题(请参阅我在 stackoverflow.com/questions/22341668/… 上的另一个问题)并且我想看看是否有适当的解决方法。
标签: angularjs filter directive