2

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

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

谢谢!

4

2 回答 2

11

MarionetteView.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 元素,这些方法都不起作用。如果这是您的情况,解决方案很简单:不要那样做。在渲染另一个视图之前显式删除前一个视图。

于 2013-01-13T01:18:18.723 回答
2

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

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

并在页面后面查看 on show 事件

于 2013-01-13T01:17:45.690 回答