2014-11-03 48 views
0

我用骨干来测试一些东西,但我不知道为什么你画我猜只是没有显示@@”为什么你画我猜不工作

initialize: function() { 
    setInterval(function() { 
     //alert("Hello"); 
     this.drawSomething(); 
    }, 1000); 
}, 
drawSomething: function() { 
    alert('hi'); 
}, 

回答

1

的问题是,里面setInterval回调背景下this是不是你所期望的(这是全局对象window)最简单的解决方法是保存在变量正确的对象引用:

var self = this; 
setInterval(function() { 
    //alert("Hello"); 
    self.drawSomething(); 
}, 1000); 
0

与您使用骨干,所以可能你使用的强调过绑定应该帮助:

initialize: function() { 
    var foo = function() { this.drawSomething(); }; 
    foo = _.bind(foo, this); 
    setInterval(foo, 1000); 
} 

或jQuery的模拟代理:

foo = $.proxy(foo, this); 
0

为迅速解决

initialize: function() { 
    setInterval(function() { 
     //alert("Hello"); 
     this.drawSomething(); 
    }.bind(this), 1000); 
}, 
drawSomething: function() { 
    alert('hi'); 
}, 

但我宁愿使用额外的变量dfsq methioned,因为一些旧的浏览器不支持绑定

相关问题