Events backbone.js视图的计时器或定时事件

Events backbone.js视图的计时器或定时事件,events,timer,backbone.js,Events,Timer,Backbone.js,我正在尝试构建一个自动旋转木马作为Backbone.js视图,以便它每隔一段时间滑动一次。理想情况下,我想要的是一个计时器事件。差不多 events{ "timer 5000" : "slide" } 我不认为这会发生。我试着从外面启动这个功能 window.setInterval(carouselView.slide, 5000); 这很有效。但是,我无法再访问视图的实例。如果我做一个console.log(这个)它给了我窗口。我想这是因为函数是从窗口调用的,而不是从视图实例调用的 任

我正在尝试构建一个自动旋转木马作为Backbone.js视图,以便它每隔一段时间滑动一次。理想情况下,我想要的是一个计时器事件。差不多

events{
  "timer 5000" : "slide"
}
我不认为这会发生。我试着从外面启动这个功能

window.setInterval(carouselView.slide, 5000);
这很有效。但是,我无法再访问视图的实例。如果我做一个
console.log(这个)它给了我
窗口
。我想这是因为函数是从
窗口调用的,而不是从视图实例调用的


任何帮助都将不胜感激。

您必须将函数绑定到上下文。我不是100%确定,但我认为这应该有效:

slide: _.bind(function(){ ... }, this)

请看

我现在意识到这是一个老问题,但您可以不受约束地执行此操作

(function(view) {
  window.setInterval(function() { view.slide(); }, 5000);
})(this);
如果在视图的initialize中使用它,它应该可以工作。它所做的基本上是创建一个闭包,这样您仍然可以访问setInterval块中的视图


我确实同意像“timer 5000”这样的计时器事件:“slide”本来是主干网的一个不错的功能,因为我在这里搜索类似的东西。

谢谢,但它没有飞起来。与
this
Window
的问题相同。我更喜欢在视图的初始化函数中使用u.bind或u.bindAll:initialize:function(){this.bindAll(this,'slide'};Window.setInterval(this.slide,5000)}啊,这应该更好,因为这些天我大部分时间都在使用coffee脚本,我忘记了这一点。最后起作用的是:
initialize:function()在移除回调之前,这会泄漏视图吗?我没有测试过,因为我们只创建了一次视图,但我猜是这样的。setInterval确实返回了一个ID,您可以在移除视图时使用它来避免泄漏。太好了,事实上,一旦完成了定时回调,我就在视图中这样做了。W谢谢你帮助我理解“结束”是什么意思。