未捕获的TypeError:this.getKeyCode不是函数

时间:2016-02-10 10:15:49

标签: javascript backbone.js

在我的骨干视图中,我有一个函数调用在同一视图中定义的另一个函数,如下所示:

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来解决这个问题?

1 个答案:

答案 0 :(得分:1)

问题在于范围变更。 this关键字在执行期间指向#document,因此您应该重新绑定所需的范围 - 骨干类:

$(document).on('keypress.namespace', function(e) {
    this.getKeyCode(e);
}).bind( this );

这是workaround