Backbone.js 主干视图:陷入僵尸事件
我的代码获取文件类型并相应地启动新的ImageViewBackbone.js 主干视图:陷入僵尸事件,backbone.js,marionette,Backbone.js,Marionette,我的代码获取文件类型并相应地启动新的ImageView var frameIdRegion = new Marionette.Region({ el: '#viewerId' }); // Create a new Backbone Marionette View with item model. Render View and Show it on Screen.
var frameIdRegion = new Marionette.Region({
el: '#viewerId'
});
// Create a new Backbone Marionette View with item model. Render View and Show it on Screen.
if(fileType === 'Image'){
frameIdRegion.close(imageView);
frameIdRegion.reset();
var imageView = new ImageView({model: item});
frameIdRegion.show(imageView);
$(".frameId img").show();
$(".frameId img").load(function(){
$("#fit_to_screen").trigger('click');
});
imageView.close();
}
else if(fileType === 'pdf'){
var objectView = new ObjectView({model: item});
frameIdRegion.reset();
frameIdRegion.show(objectView);
$("#pdf_viewer").show();
$('#pdf_viewer').trigger('focus');
}
else if(fileType === 'unsupported'){
var errorView = new ErrorView({model: item});
frameIdRegion.reset();
frameIdRegion.show(errorView);
}
但是当我启动一个新的ImageView时,我的ImageView的旧实例没有被清除。我的事情发生了很多次。这是我的ImageView代码
var ImageView = Marionette.ItemView.extend({
template: template,
className: 'frameId',
onClose: function(){
this.remove();
this.unbind();
this.model.unbind("change", this.modelChanged);
}
});
请帮助我,我做错了什么?尝试使用backbones
listenTo
函数。它连接到调用它的任何对象,因此当您的ItemView
被释放时,事件侦听器也会被释放
如果您确实需要,它还有一个stopListening
方法。当您的视图被删除时,它应该自动停止侦听由listenTo