在Backbone.Marionette中关闭CollectionView时删除集合

时间:2014-02-26 13:27:20

标签: marionette

在我的项目中关闭CollectionView后,它引用的集合仍然可用。再次打开CollectionView会在重新加载数据时复制该集合。我认为这是预期的行为,就像documentation中所说的所有CollectionView在关闭时所做的那样:

  1. 取消绑定所有listenTo事件
  2. 取消绑定所有自定义视图事件
  3. 取消绑定所有DOM事件
  4. 取消绑定已呈现的所有项目视图
  5. 从DOM中删除this.el
  6. 在视图上调用onClose事件(如果提供了一个
  7. 我猜我在onClose事件处理程序上管理集合。是否有一种删除与视图相关的集合和模型的好方法?

1 个答案:

答案 0 :(得分:2)

在您的情况下,没有必要删除该集合。不是由另一个对象直接引用的变量(在本例中是您的集合)将被javascript垃圾收集。因此,当视图和模块关闭而没有其他任何内容引用该集合时,它将被删除。

如果你想确保你不会得到任何僵尸事件,你可以在关闭模块和/或查看时清除它的事件监听器:

myCollection.off();

当然你的集合是一个全局变量(技术上是window对象的属性)然后是的,删除它可能是个好主意:

delete window.myCollection;

除此之外,将其从内存中删除并不需要担心,因为其他对象引用已关闭......