javascript - 在 Backbone JS 中保存后引用 "this" View 回调处理程序(成功或错误)的正确方法

标签 javascript binding backbone.js coffeescript

我尝试在 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/

相关文章:

backbone.js - 何时是在 Backbone js 中获取集合的合适时间?

JavaScript innerHTML 未定义

wpf - 如何使用 Bindings 获取 DateTime 值? (WPF-MVVM)

javascript - Backbone.js View 属性中的变量

java - 在 Java 中绑定(bind) XML 文件的最佳方法 (NetBeans)

sql - PL/SQL 使用哪种类型的绑定(bind)?

php - 为什么 MySql 中有文本时没有值

javascript - GoogleChrome-全屏问题

javascript - 应该触发哪个事件,以便在选中单选按钮时发生某些事情?

javascript - 在导致模糊的点击事件之后,我应该如何触发 Javascript 模糊事件?