【问题标题】:Catching remove event on View in Backbone js在 Backbone js 中的视图上捕获删除事件
【发布时间】:2014-01-27 06:03:35
【问题描述】:

有什么方法可以监听 Backbone View 上的 remove/destroy 事件吗?

我想做一些如下的事情:

$(myBackboneView).on('remove', function () {
    // do some processing
});

$(myBackboneView).on('destroy', function () {
    // do some processing
});

提前谢谢你。 :)

【问题讨论】:

  • 是的,在视图完全移除之前我需要做一些处理。

标签: backbone.js backbone-views backbone-events


【解决方案1】:

你可以尝试覆盖View.remove方法::

Backbone.View.extend({
    remove: function(){
        // Your processing code here

        Backbone.View.prototype.remove.apply(this, arguments);
    };
});

【讨论】:

  • 非常感谢。这个非常适合我:)
【解决方案2】:

我尝试了以下方法,它对我有用:

$(myBackboneView.el).on('remove', function () {
    // do some processing
});

这是一个好方法吗?或者还有什么比这更好的?

【讨论】:

  • remove 事件不是 jQuery 的一部分,它是由 jQuery UI v1.10.2 及更高版本添加的。
  • 小备注:$(myBackboneView.el) 默认提供为 myBackboneView.$el,或者 this.$el,如果你在 View 模型里面。
  • 因此 myBackboneView.$el 应该给出相同的结果。
【解决方案3】:

如果您需要监听其他被移除的视图,您可以让基础视图类在调用 remove() 时触发“移除”事件。

BaseView = Backbone.View.extend({
    remove: function () {
        this.trigger('remove', this)
        return Backbone.View.prototype.remove.apply(this, arguments)
    }
})

然后随时收听:

this.listenTo(otherView, 'remove', func)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多