2014-11-03 73 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,因爲一些舊的瀏覽器不支持綁定

相關問題