0
我想updatePlays要调用的函数作为一个回调函数,当一个AJAX调用是成功的。我认为使用下划线绑定会让我引用'this'作为我实际想要更新的Collection对象,但是我在这里遇到了麻烦。当我到达应该更新集合的函数时,它认为'this'是指'窗口'。骨干:(回调)函数甚至没有绑定到收藏
在这种情况下,一个骨干模型骨干收集,这是从另一个骨干模型制作。
鉴于:
SomeView: Backbone.View.extend({
someFunction: function(e) {
var field = this
this.picker = new PlayPicker({
field:field,
model: new PlaySet({
plays: new Collections.Plays({}),
slot: field.model
})
})
}
})
PlayPicker:Backbone.View.extend({
...
refresh: function() {
this.model.update()
},
....
收集这是模型的一部分,芭比
Plays:Backbone.Collection.extend({
model: Play ,
initialize: function() {
plays = this
_.bind(this.updatePlays, plays) // Where I thought I should bind
},
updatePlays: function (plays) {
new_plays = []
var i;
for (i = 0; i < plays.length; i++){
new_plays.push(new Play({
id: plays[i]["id"],
text: plays[i]["text"]
}));
}
this.reset(new_plays) // Uncaught TypeError: Object [object Window] has no method 'reset'
}
})
型号芭比
PlaySet: Backbone.Model.extend({
update: function() {
this.get('slot').fetchAssociatedPlays(this.get('plays').updatePlays)
},
})
型号插槽 - 做AJAX调用
Slot:Backbone.Model.extend({
...
fetchAssociatedPlays: function(update) {
thisModel = this
$.ajax({
url: thisModel.associatedPlaysURL(),
success: function (collection) {
update(collection)
}
})
}})
如果这是用下划线绑定实现的,何/如何将正确的方法是什么?
预先感谢您。
不知道这是造成你的问题,但没有指定“变种”声明“玩”这将会使的范围之前“戏剧”全球,我认为这可能会造成问题,也与其他变量你缺少的'var' –
是否这样做 - 它应该是我反正做的事情,但我仍然得到相同的错误。虽然谢谢!这里 –
答案固定我的问题 - ###又见> http://stackoverflow.com/questions/9349666/binding-a-callback-in-backbone-js-and-underscore-js?rq=1 - 什么现在做? –