如何停止显然由过滤器引起的$digest循环



考虑以下 Plunker:

http://plnkr.co/edit/10Rs92cRulf9VtI3Bav6

它似乎工作正常,但是如果您查看控制台,您会发现有些问题。 仅凭这个小表,Angular 就已经达到了 10 的摘要循环限制!

在像这样的小数据集中这不是问题,但实际的生产页面有 10 个不同的过滤器,可以跨越 30+ 天。 随着数据的增长,循环$digest越来越失控。

我能做些什么来阻止它? 我一直在翻阅源代码,试图弄清楚为什么表格一遍又一遍地被消化,即使数据根本没有改变。 我错过了什么吗?

过滤器实际上是用于处理视图的数据。

循环并创建日期范围的 ng-repeat 上的过滤器导致了问题。 ng-repeat每次都会调用该过滤器。 时间。 它。"重复":)根据我所能收集的信息,您只需在启动时(或数据更改时)创建一次范围。如果将日期范围创建代码移出筛选器,则性能应该更高。您甚至可以考虑移动范围创建服务器端。

分叉了你的 plunkr http://plnkr.co/edit/XTn7hjbQgV1DxcBlOYVJ。

最新更新