Backbone + Marionette - 模型/集合的内存管理最佳实践?

时间:2014-12-22 14:18:11

标签: javascript backbone.js memory-management memory-leaks marionette

使用BackboneMarionette销毁模型/集合时的最佳做法是什么?我知道视图是由Marionette自动内存管理(如果使用正确)但模型/集合如何?你什么时候摧毁它们?是你的视图被破坏的时候,例如下面的代码(它是TypeScript而不是JavaScript)或?

class SomeItemView extends Marionette.ItemView<Backbone.Model> {
    destroy() {
        super.destroy();
        delete this.model; // is this the best way to destroy a model/collection?
    }
}

2 个答案:

答案 0 :(得分:1)

您可能不需要明确删除模型/集合。相反,只要确保你没有留下任何悬挂引用。

当您通过全局范围访问模型时,以及使用model.on而不是listener.listenTo(model绑定事件侦听器时,最常见的方法是生成挂起引用。

答案 1 :(得分:0)

查看木偶控制器和区域可能很有用。

使用时

var region = new Marionette.Region({ el: "#container" }); 

您可以使用它来渲染内部视图:

var some_itemview = new Some_Itemview(); 
region.show(some_itemview); 

如果使用Marionette Controller来实例化模型和视图。

var some_model = new Backbone.Model(); 
//Set some properties on the model; 
var some_itemview = new Some_Itemview({ model: some_model }); 
region.show(some_itemview); 

然后,当您想要清理视图时,您只需致电:

region.close(); 

您还可以使用region.show(another_view);自动清理上一个视图。

应销毁视图和相关模型,并且视图是模型对象的唯一引用。