backbone.js - 每秒刷新一个集合?

时间:2012-06-09 19:16:09

标签: javascript backbone.js

我第一次搞乱了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,我在控制台上没有错误,但视图没有更新。

我做错了什么?

3 个答案:

答案 0 :(得分:0)

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

Todos.each(this.addOne);

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

Todos.each(_.bind(this.addOne,this));

答案 1 :(得分:0)

是的,正如@muistooshort上面提到的那样,你怎么知道计时器没有更新?试试这个

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

我认为你看到setInterval有效。

答案 2 :(得分:0)

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

绑定到模型

(在此方案中,TodosTodo个模型

的集合
Todos.each(function (todo) { 
    todo.trigger('change');
});