0

当我同步我的集合时,服务器会返回一个 JSON 对象,我想将其作为新模型添加到我的集合中。我已经这样设置了:

syncCollection: function() {    
        Backbone.sync('create', this,  {
          success: function (msg) {
              console.log(this);
              this.add(msg, {at: 0});

          }
    }, this);
    }

问题是“this”似乎并不指向集合,而是默认指向全局窗口对象。我试图绑定this到集合,但它似乎不起作用:

initialize: function() {
        _.bindAll(this, 'syncCollection');
    },

如何使用 .bind 确保this指向集合而不是窗口对象?

4

1 回答 1

1

var that = this在外部函数的开头(即之前Backbone.sync)添加,并在内部函数中替换为(即this)。thatsuccess

注意:在 JavaScriptthis中,总是指我们正在执行的函数的所有者,或者更确切地说,指的是函数作为方法的对象。

顺便说一句,您不必使用_.bindAll_.bind就足够了。

于 2013-01-10T01:36:32.680 回答