我正在尝试了解如何避免AngularJS中的内存泄漏。似乎几乎没有关于清理什么的文档,正如人们所预料的那样,垃圾收集是完美无缺的。但是,我的阅读表明,保留绑定的DOM元素很容易防止垃圾收集,StackOverflow answer表示我们必须手动取消绑定指令中设置的任何绑定,并且规模较小,clean up $timeouts as well。我遇到了this article,它指示我寻找“分离的”DOM元素。
仅使用sample $modal code from the AngularJS UI site,在打开和关闭模态对话框后,我发现了许多相当大的分离元素。它似乎不会随着重复点击而增长,但如果我有很多对话框,每个对话框都会看起来永远。我尝试在关闭后设置modalInstance = null
但是没有完成任何事情。
分离的元素真的很糟糕吗?如果是这样,应该如何修改AngularJS UI sample modal code以消除这些?
更重要的是,在使用AngularJS时,是否有任何简单明了的说明?很高兴他们提供$ on。$ destroy功能,但我找不到任何明确的说明,说明我负责清理或如何操作。
答案 0 :(得分:0)
我担心分离的元素是更复杂的问题,导致不受控制的内存泄漏。我研究了一种为我解决这个问题的方法。这就是可以通过自定义$ modal工厂更改本机ui.bootstrap模式行为,该工厂可以防止破坏和重新实例化对话框。所以$ modal对话框变成了单例。
我已经在github上分享了我对此解决方案的尝试:https://github.com/dhilt/angular-bootstrap-modal-singleton。我在我工作的项目中使用它。
答案 1 :(得分:0)