11

サーバーにも保存されているオブジェクトがあり、そのオブジェクトからバックボーン モデルを作成しています。

しかし、モデルを保存すると、PUT 要求が実行されますが、これは私が望んでいるものではありません。フェッチを行わずに、データが既にサーバーにあることをバックボーンに伝える方法は?

4

2 に答える 2

19

Backbone は、id が設定されているかどうかをチェックすることで、モデルの新しさを判断します。

新しく追加されました model.isNew()

このモデルはサーバーに保存されていますか? モデルにまだ が付いていない場合は、id新品と見なされます。

モデルを保存すると、

  • 新しい場合は、POST リクエストが発行されます。
  • 更新の場合 (ID が設定されている場合)、PUT 要求が送信されます。

バックボーン同期のドキュメント


コメントで@JayCが指摘したように:

id を文字通り にできないという問題がある場合は、どれが「ID」またはキー フィールドであるかを示すためにid使用できます。idAttribute

于 2012-04-11T16:51:01.670 に答える
-1

ここに私の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   
  ...
于 2012-07-10T01:53:59.900 に答える