正确指代“这个”的方式在Backbone JS中保存后查看回调处理程序(成功或错误)

Proper way to refer to "this" view callback handlers (success or error) after save in Backbone JS

本文关键字:回调 处理 程序 错误 成功 保存 这个 JS Backbone 方式      更新时间:2023-09-26

我试图在Backbone模型的成功或错误回调中通过$(this.el)引用view元素。

的例子:

从SomeViewClass(扩展了Backbone.View)中,

@model.save({}, {
success: (model, response) ->
    ($ this.el).removeClass("editing")
})

然而,我被"this"不指向SomeViewClass实例的事实所困扰。什么好主意吗?

既然你正在使用CoffeeScript,你可以使用一个胖箭头(=>)来绑定this的当前值到你的函数:

@model.save({}, {
    success: (model, response) =>
        ($ this.el).removeClass("editing")
})

如果你在纯JavaScript中工作,你通常会使用标准的var self = this;技巧:

var self = this;
model.save({ }, {
    success: function(model, response) {
        $(self.el).removeClass("editing");
    }
});

或者,由于您使用的是backbone.js(它需要下划线.js),您可以使用_.bind来构建绑定函数。

如果你的回调更大,或者你想在多个地方使用相同的回调,那么_.bindAll将是一个选择。你必须让回调成为一个命名方法;但是,如果回调很大,你可能还是想取消内联。