我尝试在 Backbone 模型上的成功或错误回调中通过 $(this.el) 引用 View 元素。
示例:
来自 SomeViewClass(它扩展了 Backbone.View),
@model.save({}, {
success: (model, response) ->
($ this.el).removeClass("editing")
})
但是,我坚持这样一个事实:“this”并不引用 SomeViewClass 实例。有什么想法吗?
最佳答案
由于您使用的是 CoffeeScript,因此您可以使用 fat arrow (=>
)将 this
的当前值绑定(bind)到您的函数:
@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(需要underscore.js),您可以使用 _.bind
构建您的绑定(bind)函数。
如果您的回调较大或者您想在多个位置使用相同的回调,则 _.bindAll
将是一个选择。不过,您必须将回调设为命名方法;但是,如果回调很大,您可能无论如何都想取消内联它。
关于javascript - 在 Backbone JS 中保存后引用 "this" View 回调处理程序(成功或错误)的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7524226/