我使用骨干测试某些东西,但我不知道为什么drawSomething没有显示@@"
initialize: function() {
setInterval(function() {
//alert("Hello");
this.drawSomething();
}, 1000);
},
drawSomething: function() {
alert('hi');
},
答案 0 :(得分:1)
问题在于setInterval
内部回调上下文this
不是您所期望的(它的全局对象window
)。最简单的解决方法是在变量中保存适当的对象引用:
var self = this;
setInterval(function() {
//alert("Hello");
self.drawSomething();
}, 1000);
答案 1 :(得分:0)
因为你正在使用骨干,所以你也可能使用下划线。绑定应该有所帮助:
initialize: function () {
var foo = function () { this.drawSomething(); };
foo = _.bind(foo, this);
setInterval(foo, 1000);
}
或jQuery模拟代理:
foo = $.proxy(foo, this);
答案 2 :(得分:0)
作为快速解决方案
initialize: function() {
setInterval(function() {
//alert("Hello");
this.drawSomething();
}.bind(this), 1000);
},
drawSomething: function() {
alert('hi');
},
但我更愿意使用额外的变量作为dfsq methioned,因为一些旧的浏览器不支持bind