我正在使用骨干网,我正在尝试设置如下的回调:
app.myView = Backbone.View.extend({
events : {
'click #myButton' : 'onClick',
},
onClick : function(e) {
var self = this;
myModel.save(null, {
success : self.successAction
});
return false;
},
successAction : function() {
this.myOtherFunction();
},
myOtherFunction : function() {
this.$el.hide();
}
});
这是我得到的错误:
TypeError: Object [object global] has no method 'myOtherFunction'
如何从回调函数中调用同一个类的另一个函数?
另外,我想问一下,通常可以使用回调函数传递参数吗? 像这样:
myModel.save({
"success" : successAction(param1, param2)
});
successAction : function(param1, param2) {
this.myOtherFunction();
}
答案 0 :(得分:6)
当调用函数successAction
时,它从全局范围调用,因此上下文指向回调内的全局对象,您可以使用function.bind(对旧版浏览器使用shim支持) ),试试:
onClick : function(e) {
var self = this;
myModel.save({
"success" : self.successAction.bind(self)
});
return false;
},
并传递可以使用的参数:
myModel.save({
"success" : self.successAction.bind(self, param1, param2)
});