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

标签 javascript backbone.js

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

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

最佳答案

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

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

这里是workaround .

关于javascript - 未捕获的 TypeError : this. getKeyCode 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35312339/

相关文章:

views - Backbone.js: View 之间的通信

javascript - 有没有办法在控制台自动输出所有的backbone.js触发器/事件?

javascript - 从模型中检索 Backbone 集合并将其保留为集合

javascript - JS 在按下 Shift 时限制鼠标与轴的移动(对于可拖动元素)

javascript - 我的变量更改了它设置为的变量的值

javascript - AJAX和php JSON连接DB并返回值

javascript - underscorejs中_.each(list)为空时如何显示消息?

javascript - 渲染时获取 undefined 不是 React native 中的对象

javascript - VUE Carousel 3D Slider高度

javascript - 为 JavaScript 实验组织 DRY 模板?