我目前正在使用backbone.sync
将我的集合发送到PHP函数,该函数将我的信息存储在数据库中并根据他的数据返回一些数据。
一切正常,直到我.sync()
的成功功能,因为我失去了模型和集合的范围,所以我无法更新它们,有什么方法可以解决这个问题吗?
我尝试使用两种方法,似乎都没有返回任何内容,我在这里或Google上找不到有关此主题的更多信息。在我的偏好中也避免使用model.save()
,因为对后端的调用太多了。
方法1;
var that=this;
// some logic is done here
backbone.sync("update",this.collection,{
success:function(data){
// attempt to update this.collection here, but `that` is out of scope
// and the scope of `this` is different
}
});
方法2:
var that=this;
var onDataHandler=function(data){
// attempt to update this.collection here, but `that` is out of scope
// and the scope of `this` is different
};
// some logic is done here
backbone.sync("update",this.collection,{
success:onDataHandler
});
有没有人知道解决这个问题的方法?我检查了Backbone文档并注意到collection.fetch()
函数委托给.sync()
,但第二种方法是我用于.fetch()
的方法,它可以很好地保持that
的范围1}}
答案 0 :(得分:0)
尝试:
var that=this;
var prebindHandler=function(data){
// attempt to update this.collection here, but `that` is out of scope
// and the scope of `this` is different
};
successHandler = prebindHandler.bind(this);
// some logic is done here
backbone.sync("update",this.collection,{
success:successHandler
});