使用主干网
和木偶
销毁模型/集合时的最佳做法是什么?我知道视图是由木偶自动管理的内存(如果使用正确),但是模型/集合呢?你什么时候毁灭他们?是在视图被破坏时,比如下面的代码(它是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?
}
}
您可能不需要显式删除您的模型/集合。相反,只要确保你没有给他们留下任何悬而未决的参考。
最常见的生成挂起引用的方法是,当您有可通过全局作用域访问的模型时,以及当您使用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);
,它将自动清理以前的视图。
应销毁视图和相关模型,并且视图是对模型对象的唯一引用。