【发布时间】:2012-06-09 19:16:09
【问题描述】:
我第一次搞砸了主干.js Todos。我正在尝试为每个 Todo 添加一个计时器,这很好,但是在我刷新页面之前计时器不会刷新,我希望它每秒刷新一次。
AppView 包含以下内容:
window.AppView = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'addAll');
Todos.bind('refresh', this.addAll);
Todos.fetch();
},
addAll: function() {
Todos.each(this.addOne);
},
}
所以我想我可以像这样每秒重新加载它:
window.setInterval(function(){
window.Todos.refresh();
}, 1000);
addAll 被调用,我在控制台上没有收到任何错误,但视图没有更新。
我做错了什么?
【问题讨论】:
-
您使用的是哪个版本的 Backbone?
refresh在 0.5.0 中重命名为reset,而我们现在是 0.9.2。你怎么知道你的setInterval回调没有被触发? -
@muistooshort 我现在会检查一下,因为我实际上使用的是我从 github 分叉的东西,可能已经过时了
-
这不是您问题的一部分,但您确实应该使用流控制库。在 setInterval 内执行密集操作很容易使浏览器不堪重负,导致旋转轮甚至浏览器崩溃。见github.com/bishopZ/Frame.js 和paulirish.com/2011/requestanimationframe-for-smart-animating