【问题标题】:long lived backbone.js collection bug with duplicate add events具有重复添加事件的长期主干.js 集合错误
【发布时间】:2012-01-15 05:40:22
【问题描述】:

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

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

奇怪的事件它只发生在 Firefox 中。另外,这个双重 collection.add 没有意义,因为我清楚地看到它的视图编号不同(即使它来自同一个变量。)

【问题讨论】:

  • 能否提供您的代码示例

标签: backbone.js


【解决方案1】:

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

Backbone 中目前没有内置解决方案,因此您必须自己处理。

专业提示:)

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多