1

コレクション (ローカル ストレージに保持されている) 内のすべてのモデルを削除するにはどうすればよいですか?

モデルはローカル ストレージから取得されます。クライアントとローカル ストレージの両方でモデルを破棄したいと考えています。

// Model + Collection
App.Models.Task = Backbone.Model.extend({
    defaults: {
        text: 'N/A'
    }
});

App.Collections.Tasks = Backbone.Collection.extend({
    model: App.Models.Task,
    localStorage: new Backbone.LocalStorage("task")
});


// Create collection and fetch tasks 
var tasks = new App.Collections.Tasks();
tasks.fetch(); // collection is now populated with 4 tasks


// Delete all models (both at client and local storage)
tasks.each(function(model) {
   model.destroy();
})

これを実行すると、一部のモデルのみが破棄されます。このエラーが発生し、残りのモデルが破棄されなくなります。

Uncaught TypeError: Cannot read property 'destroy' of undefined

これに関するヘルプは大歓迎です!

4

1 に答える 1

1

私は解決策を見つけました:

_.invoke(tasks.toArray(), 'destroy');

どうやら、モデルを破棄するために .each を使用することは、モデルの継続的な削除によって内部の反復が台無しになるため、悪い習慣です。

于 2014-10-07T16:52:31.077 に答える