回调函数没有看到'this'

时间:2014-11-27 13:42:38

标签: javascript jquery backbone.js

我的回调功能没有看到这个'

这是我的绑定按键代码:

     initialize: function () {
        $(document).bind('keyup', this.keyPress);
        _.bindAll(this, 'rotate');
     },
     rotate: function (event) {
        //smth...
     }

这里是功能keyPress:

     keyPress: function(event) {
        console.log(event.keyCode);
        var pageX = 0, pageY = 0;
        var ev = new Object();
        ev.pageY = pageY;
        ev.pageX = pageX;

        func = this.rotate;
        func(ev);
        //also I tried like this:
        //this.rotate(ev);
    }

这是一个错误:"未捕获的TypeError:undefined不是函数"

我无法得到它。

我将非常感谢您的帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

这里的问题是,在JQuery中,bind添加了一个事件监听器,它没有设置'这个'

的上下文

您需要使用下划线将方法绑定到上下文。

e.g。

 initialize: function () {
    $(document).bind('keyup', _.bind(this.keyPress, this));
    _.bindAll(this, 'rotate');
 },
 rotate: function (event) {
    //smth...
 }

这将确保'这个'指的是正确的对象