Backbone:在成功/错误回调中将正确的'this'引用传递给anon函数的正确方法

UpT*_*eek 15 javascript backbone.js

鉴于下面的骨干视图函数,this将回调(即当前视图)传递给回调中定义的匿名函数的正确方法是什么?

addSomething: function(e) {
    var newSomething= this.model.somethings.create({
        someProperty: xxx
    }, {
        success: function(m, response) {
            this.doSomething(); //***HERE****
        },
        error: function(m, response) {
            //Error
        }
    });
},
Run Code Online (Sandbox Code Playgroud)

没有和更改,thisanon函数中的设置被设置为窗口.

我可以像这样设置一个引用:

var thisView = this;
Run Code Online (Sandbox Code Playgroud)

然后只是引用thisView而不是this在anon函数中,但这似乎并不优雅.有没有更好的办法?

Der*_*ley 28

为了更好地组织我的代码并解决这个问题,我从未将成功和错误回调直接与我的调用一致.我总是把它们分成自己的功能.这让我保持代码干净,并使用该_.bindAll方法确保我有正确的上下文this.

SomeView = Backbone.View.extend({
  initialize: function(){
    _.bindAll(this, "createSuccess", "createError");
  },

  addSomething: function(e) {
    var newSomething= this.model.somethings.create({someProperty: xxx}, {
      success: this.createSuccess,
      error: this.createError
    });
  },

  createSuccess: function(m, response) {
    this.doSomething();
  },

  createError: function(m, response) {
    //Error
  }
});
Run Code Online (Sandbox Code Playgroud)