2

我第一次弄乱了backbone.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 被调用,我在控制台上没有收到任何错误,但视图没有更新。

我究竟做错了什么?

4

3 回答 3

0

是的,正如上面@muistooshort 所问的,你怎么知道计时器没有更新?尝试这个

window.setInterval(function(){ 
  window.Todos.refresh(); // or .reset() if you've updated backbone.js
  console.log('tick');
}, 1000);

我想你看到了setInterval

于 2012-06-11T06:57:03.470 回答
0

我的第一个猜测是这一行:

Todos.each(this.addOne);

是不正确的。你可能想要这样的东西:

Todos.each(_.bind(this.addOne,this));
于 2012-06-09T19:21:42.407 回答
0

通过手动触发模型的更改事件找到了一种方法。这是有效的,因为视图的渲染函数通过以下方式绑定到模型this.model.bind('change', this.render, this);

(在这种情况下,TodosTodo模型的集合

Todos.each(function (todo) { 
    todo.trigger('change');
});
于 2012-06-14T08:13:56.437 回答