【发布时间】:2014-08-29 01:45:46
【问题描述】:
我们正在使用 cytoscape.js 在 Angular JS 应用程序中呈现图形,它似乎正在泄漏 DOM 节点。 Chrome 开发工具中的快照比较显示,全局 cytoscape 对象中的“实例”数组保留了分离的 DOM 树。
cytoscape 实例是在指令的链接函数中创建的,我想在作用域 $destroy 事件中清除这些对象。即使我手动取消对这些实例的引用,还有其他全局对象,如 CanvasRenderer.data.container 或 CanvasRenderer.bindings[].target 仍然保留这些元素,从而防止它们被垃圾收集。
我的问题是:cytoscape 是否有一个 destroy() 方法可以释放对这些 DOM 元素的引用,我可以在 angular $destroy 事件中调用这些元素?或者什么是摆脱这些全局引用的正确方法?
Chrome 开发工具分析器的屏幕截图在这里:https://drive.google.com/folderview?id=0B6OGkJMuELQHeC01U1FBYkd4NVU&usp=drive_web
(在此处附加图片缺乏足够的声誉)
【问题讨论】: