在我的骨干视图中,我有一个函数调用在同一视图中定义的另一个函数,如下所示:
View.FormCustomer = CommonViews.FormCustomer.extend({
title : "Ajouter une fiche client",
events : {
"keypress .customerForm" : "getKeyCodeD"
},
getKeyCode : function(e) {
if (e.keyCode == "13") {
this.save(e);
}
},
getKeyCodeD : function(e) {
$(document).on('keypress.namespace', function(e) {
this.getKeyCode(e);
});
},
当我通过按键调用getKeyCodeD函数时出现错误Uncaught TypeError: this.getKeyCode is not a function
我认为$(document).on
是问题,因为当我直接调用getKeyCode函数时,调用this.save(e);
如何在初始化中不$(document).on
来解决这个问题?
答案 0 :(得分:1)
问题在于范围变更。 this
关键字在执行期间指向#document
,因此您应该重新绑定所需的范围 - 骨干类:
$(document).on('keypress.namespace', function(e) {
this.getKeyCode(e);
}).bind( this );
这是workaround。