当我同步我的集合时,服务器返回一个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
指向集合而不是窗口对象?
答案 0 :(得分:1)
在外部函数的开头添加var that = this
(即在Backbone.sync
之前),并在内部函数中将this
替换为that
(即{{1} })。
注意:在JavaScript success
中,始终引用我们正在执行的函数的所有者,或者更确切地说,指向函数是其方法的对象。
顺便说一句,你不必使用this
,_.bindAll
就够了。