コレクション内の個々のモデルの変更を保存する際に問題があります。ロードされたモデル(.reset()コレクションを介して)は、予想されたPUTの代わりに(新しいものと同じように)POSTを発行しています。既存モデルの.save()はPUTの代わりにPOSTを発生させます
ここで私が取っているアプローチです:
APPVIEW
はthis.model.childcollection.reset(サーバからのJSON DATA)を経由して、子コレクションをロードしますが、それに
は、機能をレンダリングのコレクション内の各項目のための新しいchildviewを作成し、レンダリング:そのイベントの一つでChildView
-
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; },
をそれ基礎となるモデルの一部の値を変更して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();
-
観察:
- (なし子IDを持つ)POSTが(子IDを持つ)の代わりにPUTで呼ばれ
- 子要素Idsは
を設定している誰もが言うことができますなぜ私はこれが起こっているかもしれませんか?
おかげで - 問題となっているように見えます - 「イド'サーバー側モデルのプロパティ名を大文字にしました。それを小文字に変更すると固定されているようです。 – UpTheCreek
また、Backbone.Modelを拡張するときに 'idAttribute'オプションを使用することで、BackboneがIDフィールドを考慮するフィールド名を変更できました。 –