Ho qualche problema a salvare le modifiche ai singoli modelli in una raccolta. I modelli che sono stati caricati (tramite una collezione .reset()) stanno emettendo un POST (come se fossero nuovi) invece del PUT atteso..save() sul modello esistente causa POST invece di PUT
Qui è l'approccio che sto prendendo:
APPVIEW
Carichi la collezione bambino tramite this.model.childcollection.reset (JSON dati dal server);
nella sua funzione di rendere, crea un nuovo childview per ogni elemento della collezione e lo rende:
render: function() { var el = this.el; this.model.childcollection.forEach(function(s) { var view = new ChildView({ model: s }); el.append(view.render().el); }); return this; },
ChildView
In uno dei suoi eventi si sta cambiando alcuni valori del modello sottostante e chiama save:
this.model.set( { ValueA: somevalue, ValueB: somevalue }, { error: function() { console.log("Error saving model"); }, success: function() { console.log("Model change saved"); } }); this.model.save();
Osservazioni:
- POST (senza bambino id) è chiamato al posto del PUT (con bambino Id)
- Elementi figlio sono Ids impostare
Qualcuno può dire me perché questo potrebbe accadere?
Grazie - che sembra essere stato il problema - la 'Id 'nome della proprietà sul modello lato server è stato in maiuscolo. Cambiarlo in minuscolo sembra averlo risolto. – UpTheCreek
In alternativa, è possibile che sia stato modificato il nome del campo che Backbone considera il campo ID utilizzando l'opzione 'idAttribute' quando si estende Backbone.Model. –