Chr*_*ser 0 javascript backbone.js
我正在使用骨干网,我正在尝试设置回调,如下所示:
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();
}
});
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
TypeError: Object [object global] has no method 'myOtherFunction'
Run Code Online (Sandbox Code Playgroud)
如何在回调函数中调用同一个类的另一个函数?
另外,我想问一下,通常可以使用回调函数传递参数吗?像这样:
myModel.save({
"success" : successAction(param1, param2)
});
successAction : function(param1, param2) {
this.myOtherFunction();
}
Run Code Online (Sandbox Code Playgroud)
似乎在successAction调用函数时它是从全局范围调用的,所以上下文指向回调内的全局对象,你可以使用function.bind(对旧浏览器支持shim),试试:
onClick : function(e) {
var self = this;
myModel.save({
"success" : self.successAction.bind(self)
});
return false;
},
Run Code Online (Sandbox Code Playgroud)
并传递可以使用的参数:
myModel.save({
"success" : self.successAction.bind(self, param1, param2)
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |