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()