长期的backbone.js集合错误,包含重复的添加事件

时间:2012-01-14 18:55:03

标签: backbone.js

我遇到了在视图initialize()中使用的backbone.js collection.add的问题;在我的应用程序中,当你更改部分我删除我的视图,但我不删除我在该部分中使用的集合(集合在应用程序加载时初始化为空)。

如果有人回到我的部分,我会使用相同的集合,并在其上初始化this.collection.add()。然而,作为副作用,集合现在在我的新视图中添加了2倍的模型,有没有办法防止这种行为?

事件陌生人它只发生在Firefox中..而且,这个double collection.add毫无意义,因为我清楚地看到它的视图编号不同(即使它来自同一个变量。)

1 个答案:

答案 0 :(得分:1)

更改视图时必须手动取消绑定事件侦听器 - 否则事件侦听器将继续引用内存中已删除的视图,并且永远不会对其进行垃圾回收。从长远来看,当你的应用程序开始吃资源时,它会导致大量内存泄漏和整个系统变慢。

目前Backbone中没有内置的解决方案,所以你必须自己处理它。

专业提示:)

例如,您可以从视图中侦听路由更改,如果路由更改,则调用“onDestroy”方法,该方法可以清除所有引用

其他选项是 - 而不是删除视图 - 使用jquery detach方法,该方法不会清除所有jquery dom / custom事件并多次重用相同的视图