サーバーにも保存されているオブジェクトがあり、そのオブジェクトからバックボーン モデルを作成しています。
しかし、モデルを保存すると、PUT 要求が実行されますが、これは私が望んでいるものではありません。フェッチを行わずに、データが既にサーバーにあることをバックボーンに伝える方法は?
サーバーにも保存されているオブジェクトがあり、そのオブジェクトからバックボーン モデルを作成しています。
しかし、モデルを保存すると、PUT 要求が実行されますが、これは私が望んでいるものではありません。フェッチを行わずに、データが既にサーバーにあることをバックボーンに伝える方法は?
Backbone は、id が設定されているかどうかをチェックすることで、モデルの新しさを判断します。
新しく追加されました
model.isNew()
このモデルはサーバーに保存されていますか? モデルにまだ が付いていない場合は、
id
新品と見なされます。
モデルを保存すると、
コメントで@JayCが指摘したように:
id を文字通り にできないという問題がある場合は、どれが「ID」またはキー フィールドであるかを示すためにid
使用できます。idAttribute
ここに私の2セントを追加して、私がしなければならなかった髪の毛の引っ張りを避けることを願っています.
コンストラクターを介してモデルの id プロパティを直接 false または null に設定してもうまくいきません。delete を介して実際にメモリから削除する必要があります。
たとえば、あるモデル タイプから別のタイプに新しいモデルとして属性をコピーするのに苦労しました。
copy = Trip.clone()
#doesn't unset the id attribute
schedule = new models.Schedule(_.extend(copy.attributes, {id:null, trip_id:id})
#does unset the id attribute
delete schedule.id
schedule.save null, success: =>
# back from POST vs PUT
...