使用Backbone.js或Marionette.js检测何时从页面中删除视图

时间:2013-01-13 00:35:04

标签: javascript backbone.js marionette

将Backbone.js与Marionette.js一起使用(Go Derick Bailey!)。需要检测何时从页面中删除视图。具体来说,我用另一种观点覆盖它。

是否有一个事件我可以检测到我可以重载以检测何时发生这种情况?

谢谢!

2 个答案:

答案 0 :(得分:11)

Marionette为此目的提供了View.onClose方法:

Backbone.Marionette.ItemView.extend({
  onClose: function(){
    // custom cleanup or closing code, here
  }
});

在vanilla Backbone中,您可以覆盖View.remove方法:

Backbone.View.extend({
  remove: function(){
    // custom cleanup or closing code, here

    // call the base class remove method 
    Backbone.View.prototype.remove.apply(this, arguments);
  }
});

如果您只是破坏视图的DOM元素,这些方法都不会起作用。如果是这种情况,解决方案很简单:不要这样做。在显示另一个视图之前,先显式删除上一个视图。

答案 1 :(得分:2)

区域展示功能将完成您​​正在寻找的大部分内容

https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.region.md#basic-use

查看页面后面的on show事件