0

我正在玩backbone.js 的Todos 示例 ,但是当我运行save 时,toggleAllComplete 函数不会迭代集合。但是,当我改为提醒标题时,它会遍历整个集合。

toggleAllComplete: function () {  
    var done = this.allCheckbox.checked;  
    Todos.each(function (todo) {  
        /* this doesn't iterate over the collection */  
        // todo.save({'done': done});  
        /* this does */      
        alert(todo.get('title'));  
    });  
}

为什么?

我也试过这个, _.each(Todos.models, function(todo) { 但同样的问题仍然存在。当我在 chrome 中使用开发人员工具时,我看到我有一个未捕获的类型错误:在主干本地存储.js 中的这一行上将循环结构转换为 JSON

this.localStorage().setItem(this.name+"-"+model.id, JSON.stringify(model));
4

1 回答 1

0

如果存在错误保存,那么它可能会阻止每个模型检查每个模型。当你发出警报时,没有错误,所以它让每个人都做自己的工作。

您可以尝试在 save 方法中加入一些回调,看看是否有助于调试。

todo.save({'done': done}, {
  success: function() { console.log(["success", arguments]); } 
  error: function() { console.log(["error", arguments]); }
});
于 2013-02-27T00:15:09.430 回答