使用角度.js ngRepeat和Routes时如何处理内存泄漏

How to handle memory leak when using angular.js ngRepeat and Routes?

本文关键字:何处理 处理 泄漏 内存 js ngRepeat Routes      更新时间:2023-09-26

当我将ngRepeat与Route服务一起使用时,Angular泄漏了DOM元素。

我们的应用程序有一个包含搜索结果的表格。当用户单击分页控件上的"下一步"按钮时,应用将更改路由。所以http://website/results/1会变得http://website/results/2这会导致angular在ngRepeat指令上调用编译,从而清除它的缓存。缓存中的 DOM 元素和 $scope 对象会粘住并泄漏。

您可以在http://docs.angularjs.org/api/上看到同样的问题

导航到上面的站点,打开开发工具并启动时间线。然后开始单击左侧的导航。从顶部开始并继续单击,直到到达导航的底部,然后返回。

你会看到 DOM 节点数量一直在增长,永远不会被完全收集。

这是一个真正的问题。

我的问题是:现在有人如何解决这个问题吗?有解决方法吗?

此外,作为旁注但仍然相关的是,角度似乎泄漏了包装内联表达式的每个元素。{{objectOnTheScope}}

它可能与嵌套的 ng-repeat 内存泄漏有关。请参阅 https://github.com/angular/angular.js/issues/1313#issuecomment-10378451