2012-07-10 8 views
11

バックボーンモデルを保存するとどうなりますか?ここで私はドキュメントhere読んでつなぎ合わせることができます最善です:Backboneモデルを保存するとどうなりますか?

  1. model.save([attributes], [options])が呼び出されるの
  2. A「変更」イベントが発生している(ただし、属性が新しく追加されている場合のみ)
  3. サーバが通知され変化する?サーバが

を返します。しかし、私はバックボーンのnoobだと私は他の誰かが説明の方法より良い仕事をすることができると確信して一度

  • はA「同期」イベントが呼び出されます。

    私は部分的に何が起こるのか不思議です。また、BackboneがJSONオブジェクトをサーバーに送信する方法を理解するのにも困っています。私はseparate problemを持っています。JSONオブジェクトは私が望むものではありませんが、変更する方法はわかりません。

  • 答えて

    8

    詳細なプロセスはBackbone.Model.saveBackbone.syncについてはannotated source codeにあります。

    options.waitoptions.silentを無視すると、分解はほとんど正しいです。

    あなたがmodel.saveを発行します。

    1. 関数に渡された属性は、値がmodel.syncまたはBackbone.sync
    2. syncシリアライズに
    3. save代表者の要求を変更した場合、変更イベントが発生し、設定されていますJSON.stringify(model.toJSON())
    4. Ajaxリクエストが送信されたサーバーに送信され、新しいオブジェクトのPOSTリクエストが送信されます。 PUTを更新します。ターゲットURLは、model.url(またはcollection.url/id)によって定義されます。
    5. 要求が完了すると、モデルはサーバー応答がある場合は更新され、それに応じてchangeイベントがトリガーされます。
    6. 成功またはエラーのコールバックが呼び出され、成功コールバックが定義されていない場合はsyncイベントがトリガされます。

    通常、あなたがmodel.toJSONまたはmodel.sync

    +2

    バックボーン0.9.9ではステップ6が変更されました。 Backbone.sync内のhttp://backbonejs.org/#changelog統合された「同期」イベントと「エラー」イベントを参照してください。成功またはエラーのコールバックの有無にかかわらず、現在はトリガーされています。 –

    -1

    最初にオーバーライドすることで、この動作をカスタマイズすることができ、私はあなたが本当に非常にsimple.Defaultバックボーンとサーバー側の相互作用がを通じて達成され、バックボーンのソースコードを読むことをお勧めbackbone.sync。

    秒、コードのデバッグmodel.saveメソッドを再度トレースすることができます。詳細は当然です。 ここから始めてみることをお勧めします: http://backbonejs.org/examples/todos/index.html

    関連する問題