2012-11-27 16 views
6

So jetzt, wenn ich ein Modell und der Server gibt einen Fehler zu zerstören, wird das zerstören Ereignis ausgelöst sowieso und die Modelldaten zurückgesetzt werden ..Backbone.js Modell löscht Ausfall

Gibt es trotzdem, dass zu verhindern ?

Antwort

6

Sie können {wait: true} als Option an destroy() übergeben, was dazu führt, dass auf eine Antwort vom Server gewartet wird, bevor das Modell aus der Sammlung entfernt wird.

In Bezug auf die Ansichten auf Ereignisse zu binden, sollten Sie die remove und destroy Ereignisse separat Handling, da die remove Ereignis ausgelöst wird, wenn der Server erfolgreich zurückgegeben wird, aber nie, wenn der Server einen Fehler zurückgibt.

Alternativ können Sie einen error Handler an model.destroy übergeben, den Sie dann verwenden können, um das Modell zurückzusetzen, wenn der Server aus irgendeinem Grund fehlschlägt. Entweder fügen Sie das Modell einfach in Ihre Sammlung zurück (falls vorhanden) oder veranlassen Sie das erneute Laden der Daten vom Server (was die sicherere Option ist).

Beachten Sie, dass bei dieser Methode das Ereignis remove weiterhin ausgelöst wird und ein Ereignis add folgt, wenn Sie das Modell zurücksetzen.

thing.destroy({error: function(model, response) { 
    // put the thing back in the collection, or cause the collection to reload 
}}); 

Sie haben erwähnt, dass die Modelldaten zurückgesetzt werden. Ich glaube, dass das model-Argument in dem obigen Fehlerhandler das ursprüngliche Modell erhält, so dass Sie weiterhin auf seine Daten zugreifen können.

Weitere Informationen finden Sie im Backbone-Dokument - http://backbonejs.org/#Model-destroy

Verwandte Themen