2017-04-23 2 views
0

Ich versuche, Daten auf Backbone zu aktualisieren.Aber meine save() -Funktion Post Insead Put.Backbone save() -Methode Post Insead Put

editEvent:function(e){ 
     var departments=new Department(); 
     departments.set("departmentName",this.$el.find(".departmentName").val()); 
      departments.save(); 

      this.render(); 

     }, 

departmentModel

var Department = Backbone.Model.extend({ 
    urlRoot: "/rest/department", 
    idAttribute:'departmentID' 

    } 
}); 
return Department; 

Vorlage

<th> 
    <span>{{user.department.departmentName}}</span> 
    <input data-placement="top" title="Boş geçilemez!" class="form-control text-center departmentName" type='text' 
      style='display: none;' value='{{user.department.departmentName}}'/> 
</th> 
+0

ich eine [umfassende Antwort auf wie eine POST-Anforderung mit Backbone zwingen] schrieb (http://stackoverflow.com/a/41091957/1218980). Die meiste Technik könnte verwendet werden, um eine PUT-Anfrage zu erzwingen. –

Antwort

2

, die durch Design ist, ist hier ein Ausschnitt aus dem Backbone docs for the save function:

Wenn das Modell isNew, speichern das wird sein, "create" (HTTP POST), wenn das Modell bereits auf dem Server vorhanden ist, wird das Speichern ein "Update" sein (HTTP PUT).

Das Modell wird als "neu" betrachtet, wenn es keine id hat.

Da Sie das Modell zum ersten Mal erstellen, verwendet Backbone die Methode POST, da dies bedeutet, dass Sie eine neue Ressource erstellen. Für weitere Informationen über die meaning of HTTP verbs.

Mein Vorschlag wäre dies auf der Serverseite wird die Lösung und macht separate Handler für POST und PUT, aber wenn Sie wirklich PUT-Methode wollen zwingen, sind hier einige Tipps: What is the least ugly way to force Backbone.sync updates to use POST instead of PUT?

0

ich das Problem mit der Verwendung von id gelöst .Wenn Sie PUT-Anfrage ohne ID versuchen, denken Backbone "es ist ein neues Modell". Aber Sie sparen mit Daten-ID-Wert, Backbone Think PUT Anfrage.

Deshalb habe ich versucht, Anfrage mit ID und das hat funktioniert.

departments.set("departmentID",this.$el.find(".departmentName").data("id")); 
      departments.set("departmentName",this.$el.find(".departmentName").val()); 
      departments.save(); 
+0

Das ist [Mario Antwort] (http://stackoverflow.com/a/43582132/1218980) ist etwa. Sie sollten ihn aufwerten und akzeptieren. –