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で開発者ツールを使用すると、キャッチされないタイプのエラーが発生することがわかります:backbone-localstorage.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 に答える