使用AngularJS/jQuery分离DOM树

前端之家收集整理的这篇文章主要介绍了使用AngularJS/jQuery分离DOM树前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我有一个很简单的角度应用程序,我想弄清楚什么是导致分离的DOM树显示在chrome分析器。例如,当您加载此页面时:

http://rztest.nodejitsu.com/dashboard

我得到2个分离的DOM树,一个有2个条目,另一个有3个条目。这个页面不使用任何自定义指令,所以它必须是与Angular或jQuery的东西,但我只是没有看到任何会导致这些分离的DOM树。

问题变得更大(如果你点击项目链接,并做另一个配置文件,有更多的分离的DOM树和条目中),所以我希望如果我可以解决这个非常简单的例子,它将级联在整个休息的应用程序。

还要注意,我使用的ui路由器,但我已经尝试过这个相同的事情与Angular的默认路由器具有相同的结果。即使是todomvc Angular应用程序(http://todomvc.com/architecture-examples/angularjs/#/),不使用jQuery已分离DOM树。

更新

我把jQuery从应用程序中拉出来,在我的简单页面上,除了一个分离的dom树之外,所有的DOM树都消失了(一个是从AngularJS,我知道它在哪里)。当我尝试一个更复杂的页面(与一个自定义指令,有一个templateUrl,并且确实互斥),删除jQuery似乎不帮助。

我不知道如果jQuery是实际的问题(或者可能是它的一部分)或如何Angular使用jQuery / jqLit​​e。

有人知道如果有一个现有的分离的DOM树已知的jQuery 1.10.x?

我花了好几个小时调试DOM节点泄漏在一些大型的AngularJS应用程序。

我发现很多分离的DOM元素不是垃圾收集,因为jQuery有一些内部缓存对它们的引用。我相信有一些Angular / jQuery问题在玩。

不幸的是,我发现挖掘问题快速创建更多的问题比答案(例如,我注意到,在我的应用程序打开/关闭视图将导致分离DOM元素…但重新打开/关闭不会创建任何更多) – 最后,我不得不作出妥协:

当一个元素被销毁,我会递归删除子元素从他们的父母。

我承认这是一个绝对的黑客 – 但结果是任何泄漏的DOM元素将不再拥有大的子树的元素,所以内存泄漏将变得更少的问题。

如果你没有找到解决这个问题的解决方案…这肯定会帮助保持泄漏在某种控制下。

猜你在找的Angularjs相关文章