使用Backbone
和Marionette
销毁模型/集合时的最佳做法是什么?我知道视图是由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?
}
}
答案 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);
自动清理上一个视图。
应销毁视图和相关模型,并且视图是模型对象的唯一引用。