【问题标题】:Requirejs Jquery prototype inheritance [duplicate]Requirejs Jquery原型继承[重复]
【发布时间】:2014-06-03 22:50:40
【问题描述】:

我正在尝试将 jquery 导入到最初在构造函数中工作的原型类中。

我在调用 resizeCanvas 事件时失去了我的 jquery 范围。它说 width() 和 height() 函数是未定义的。

有没有办法让我不会丢失 jquery 变量。

define(['jquery'], function($) {

    function Canvas() {
        this.canvas   = document.getElementById('canvas');
        this.context  = this.canvas.getContext('2d');
        this.rowbuild = $('#rowbuild');
    }

    Canvas.prototype.addResizeListener = function() {
        window.addEventListener('resize', this.resizeCanvas, false);
    };
    Canvas.prototype.resizeCanvas = function() {
        this.canvas.width  = this.rowbuild.width();
        this.canvas.height = this.rowbuild.height();
    };

    return Canvas;
});

【问题讨论】:

  • 我发现了我需要传递jquery的上下文的问题。 $(window).on('resize', this.resizeCanvas);

标签: javascript jquery inheritance requirejs


【解决方案1】:

您需要使用bind$.proxy 将侦听器绑定到正确的上下文对象。

window.addEventListener('resize', this.resizeCanvas.bind(this), false);

另外,如果你已经在使用 jQuery,为什么还要使用 addEventListener

【讨论】:

    猜你喜欢
    • 2019-01-24
    • 2016-07-04
    • 2020-12-28
    • 2013-04-10
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多