3

私のアプリでは、ユーザーは多数のモデルを含むコレクションを作成します。サーバーに大量のリクエストを送信したくないので、これらのモデルをサーバーにバッチで保存するカスタム関数を作成しました。次に、サーバーはIDを含むすべてのモデルで応答し、これがさまざまなモデルに設定されます。これまでのところ、すべてうまく機能しています。

私が今抱えている問題は、この時点ですべてのモデルがサーバーと同期されていることをBackboneが認識していないことです。そのため、アプリの後半で、各モデルでmodel.save()を呼び出すと、各モデルがサーバーに再度送信されます(バッチ操作以降に変更されたモデルのみである必要があります)。すべてのモデルが同期されていることをBackboneに知らせるにはどうすればよいですか?'changed'属性と'hasChanged'属性を見ていましたが、これらを操作する必要があるかどうかはよくわかりません(おそらくそうではありません)。

4

2 に答える 2

7

バックボーンには、サーバーとの最後の同期以降に変更された属性を追跡する機能は含まれていません。

changedとはhasChanged、サーバーとの最後の同期以降に変更された属性を処理していません。

モデルの状態を追跡するための独自のメカニズムを作成する必要があります。

  1. 各モデルにはhasChangedSinceLastSyncフラグが必要です。
  2. 各モデルは独自のイベントにバインド (.on) しchange、フラグを true に設定する必要があります。
  3. サーバーからデータが返されたら、メソッドをオーバーライドしsync、フラグを false に設定します (読み取り/作成/更新用)。
于 2012-12-01T16:47:28.017 に答える
0

モデルの属性が設定されていない/nullの場合、バックボーンはHTTP POSTサーバー側でモデルを作成するために を作成します。id

したがってid、サーバーがそれらを返すときに、この属性を手動で設定する必要があります。

また、id属性が でないid場合は、バックボーンに別の属性であることを伝えることができます。

Cf、ドキュメント:

于 2012-12-01T16:45:45.707 に答える