6

コレクションにモデルを追加し、model.save を実行しました。データはサーバーに保存されます。

この後、collection.fetch({add:true}) を呼び出します。理想的には、サーバーからモデルを 1 つだけ返す必要があります。つまり、新しく追加されたモデルですが、コレクション全体がクロム開発者ツールに反映されていることがわかります。

よくわかりません。これは実際にどのように機能しますか?

4

2 に答える 2

14

Cyril N.の回答(これは基本的にデフォルトの動作を説明しており、私が推測するのに十分なはずです)へのアドオンとして、3つのフラグの役割をより徹底的に説明したいと思います:

  • add: Backbone が、まだ存在しないモデル (つまり、id がコレクションにない) を作成してコレクションに追加するかどうか
  • remove: バックボーンがサーバーから戻されなかったモデルをコレクションから削除するかどうか (つまり、ID が戻されなかったモデルは戻されたデータです)
  • merge: 最初の 2 つのカテゴリに含まれていないモデル (既にコレクションにあり、サーバーから戻されたモデル) をバックボーンが更新する必要があるかどうか。

ただし、メソッドの一般的な動作についてもう少し詳しく説明したいと思います (Collection#setメソッドをコールバックとして使用するため、よりCollection#setの動作になります)。バックボーンはモデルを準備します。つまり、メソッドの開始時に偽の揮発性モデルを作成します (追加されていない場合にのみ揮発性になります)。これにより、予期しない動作が発生する可能性があります。モデルが作成されるため、それらの初期化メソッドが実行されます。

また、補足として、バックボーン 1.0 以降、Collection#resetフェッチ時にコレクションをリセットする場合にフラグが導入されました (したがって、このメソッドをコールバックとして使用します)。それ以前は、Collection#fetchメソッドのデフォルトの動作でした。

まあ、両方の答えがあれば、必要なすべての情報が得られるはずです。

于 2013-04-11T08:33:04.613 に答える