在Backbone集合中绑定

时间:2013-01-10 01:31:47

标签: javascript jquery backbone.js bind

当我同步我的集合时,服务器返回一个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指向集合而不是窗口对象?

1 个答案:

答案 0 :(得分:1)

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

注意:在JavaScript success中,始终引用我们正在执行的函数的所有者,或者更确切地说,指向函数是其方法的对象。

顺便说一句,你不必使用this_.bindAll就够了。