Javascript 删除主干中嵌套视图的有效方法

Javascript 删除主干中嵌套视图的有效方法,javascript,backbone.js,Javascript,Backbone.js,我正在创建一个单页应用程序。切换到其他视图时,我想删除一个视图。在当前视图中,我有一组照片。如何在没有内存泄漏的情况下高效地删除视图和照片收集视图 我做了以下工作: 销毁方法: destroy: function(){ this.undelegateEvents(); this.stopListening(); this.$el.empty(); collection.reset(); } 活动: this.listenTo(collection, 'reset', this.

我正在创建一个单页应用程序。切换到其他视图时,我想删除一个视图。在当前视图中,我有一组照片。如何在没有内存泄漏的情况下高效地删除视图和照片收集视图

我做了以下工作:

销毁方法:

destroy: function(){
  this.undelegateEvents();
  this.stopListening();
  this.$el.empty();
  collection.reset();
}
活动:

this.listenTo(collection, 'reset', this.resetBoard);
事件处理:

resetBoard: function(collection, options){
  var models = options.previousModels;
  _.each(models, function(model){
    model.id = null;
    model.destroy();
  });
}
在这里,我首先清空$el($el将被其他视图使用),以便可以一次性完成DOM操作。接下来,我重置集合并销毁这些模型和相关视图


这个逻辑正确吗?有更好的解决方案吗?

这是一篇关于在主干视图中防止内存泄漏的好文章:

我认为您不需要显式地从内存中删除模型和集合。您只需要确保视图不再侦听其中的更改。这是javascript和主干中垃圾收集的一个很好的概述,特别是:

在任何情况下,model.destroy()的使用对我来说似乎有点奇怪/不正常,因为我认为它是一种服务器操作(从服务器中删除模型),我还想知道resetBoard是否会执行,因为在重置集合时您已经调用了stopListening()