提问者:小点点

主干木偶-模型/集合的内存管理最佳实践?


使用主干网木偶销毁模型/集合时的最佳做法是什么?我知道视图是由木偶自动管理的内存(如果使用正确),但是模型/集合呢?你什么时候毁灭他们?是在视图被破坏时,比如下面的代码(它是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个答案

匿名用户

您可能不需要显式删除您的模型/集合。相反,只要确保你没有给他们留下任何悬而未决的参考。

最常见的生成挂起引用的方法是,当您有可通过全局作用域访问的模型时,以及当您使用model绑定事件侦听器时。打开而不是侦听器。listenTo(型号)。

匿名用户

研究木偶控制器和区域可能很有用。

使用时

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

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

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

如果使用木偶控制器实例化模型和视图。

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);,它将自动清理以前的视图。

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