从回调函数中调用其他函数时"Obect没有方法"

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)

PSL*_*PSL 6

似乎在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)