2

您可以在 Backbone 视图中delegateEvents()实现自定义。undelegateEvents()

Backbone.View 构造函数自动调用delegateEvents。我认为当您使用 Backbone.View.prototype.remove 删除视图时调用了 undelegateEvents,但事实并非如此。

那么,手动执行此操作的最佳方法是什么?我已经remove()用这段代码覆盖了视图方法:

Backbone.View.prototype.remove = function() {
    var remove = Backbone.View.prototype.remove;

    if (this.undelegateEvents) {
      this.undelegateEvents();
    }

    return remove.apply(this, arguments);
};

它有效,但我不知道是否是最佳选择。我该怎么做?

4

1 回答 1

1

由于 mu 建议太短,问题的真正答案

手动执行此操作的最佳方法是什么?

是不要。事件绑定到 DOM 元素,如果这些元素消失,绑定也会消失。 undelegateEvents设计用于您删除 DOM 元素,但仍希望从中删除事件绑定的情况(例如,当您为视图设置新元素时)。

于 2013-01-03T20:29:28.643 回答