2012-11-28 3 views
5

Ich habe den folgenden Code, um ein neues Modell zu einer Sammlung zu erstellen. Der zugrunde liegende Datenspeicher ist ein Remote-API:Backbone model.create ruft keinen Callback auf

 var postCreationStatus = this.model.create(newPostModel, { 
      wait : true  // waits for server to respond with 200 before adding newly created model to collection 
     }, { 
      success : function(resp){ 
       console.log('success callback'); 
       console.log(resp); 
      }, 
      error : function(err) { 
       console.log('error callback'); 
       console.log(err); 
      } 
     }); 

Das neue Modell erstellt wird, und ich kann diese aus der Datenbank bestätigen, aber weder der Erfolg noch die Fehler Rückrufe aufgerufen.

Nachdem die Erstellung abgeschlossen wurde, möchte ich den Benutzer umleiten. Eine vorzeitige Umleitung beendet die AJAX-Anfrage, weshalb es wichtig ist, dass ich den Erfolgs-Callback verwende. Der Server antwortet mit einer JSON-Antwort { id : 11 } und einem HTTP-Status 200 OK.

+1

Dieser Titel ist falsch, diese Frage bezieht sich nicht auf collection.create –

Antwort

6

Blick in den Backbone-Code, erkannte ich meinen Aufruf an die create() Funktion war falsch. Die Erfolgs- und Fehlerrückrufe müssen innerhalb des Objekts liegen, das als zweites Argument und nicht als drittes Argument übergeben wird. Das geänderte und funktionierende Snippet ist das:

var postCreationStatus = this.model.create(newPostModel, { 
    wait : true, // waits for server to respond with 200 before adding newly created model to collection 

    success : function(resp){ 
     console.log('success callback'); 
     console.log(resp); 
     that.redirectHomePage(); 
    }, 
    error : function(err) { 
     console.log('error callback'); 
     // this error message for dev only 
     alert('There was an error. See console for details'); 
     console.log(err); 
    } 
}); 
Verwandte Themen