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

时间:2011-11-01 22:27:33

标签: events timer backbone.js

我正在尝试构建一个自动轮播作为Backbone.js View,以便它经常滑动。理想情况下,我想要的是计时器事件。像

这样的东西
events{
  "timer 5000" : "slide"
}

我没有看到这种情况发生。我尝试从外面解雇这个功能。

window.setInterval(carouselView.slide, 5000);

有效。但是,我无法再访问该视图的实例。如果我执行了console.log(this);,它会给我Window。我想这是因为该函数是从Window而不是从视图实例调用的。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

我现在意识到这是一个老问题,但你可以不加约束地做到这一点。

(function(view) {
  window.setInterval(function() { view.slide(); }, 5000);
})(this);

如果你坚持在你的视图初始化它应该工作。它的作用基本上是创建一个闭包,这样你仍然可以访问setInterval块中的视图。

我同意像“计时器5000”这样的计时器事件:“幻灯片”对于Backbone来说是一个很好的功能,因为我在这里搜索我的方式寻找与此完全相同的东西。

答案 1 :(得分:1)

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

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

请参阅Backbone FAQ