6

したがって、モデルを破棄してサーバーがエラーを返すと、とにかく破棄イベントが発生し、モデル データがリセットされます。

それが起こらないようにする方法はありますか?

4

1 に答える 1

7

コレクションからモデルを削除する前に、サーバーからの応答を待機するように に{wait: true}オプションとして渡すことができます。destroy()

ビューをイベントにバインドするという点では、イベントはサーバーが正常に戻ったときに発生しますが、サーバーがエラーを返した場合は決して発生しないため、removedestroyイベントを別々に処理する必要があります。remove

errorまたは、ハンドラーをに渡すこともできmodel.destroyます。これを使用して、サーバーが何らかの理由で失敗した場合にモデルを元に戻すことができます。モデルをコレクションに戻すか (コレクションがある場合)、サーバーからデータを再ロードします (こちらの方が安全なオプションです)。

このメソッドでは、removeイベントは引き続き発生し、addモデルを元に戻すとイベントが続くことに注意してください。

thing.destroy({error: function(model, response) {
  // put the thing back in the collection, or cause the collection to reload
}});

モデルデータがリセットされていると言いました。上記のエラー ハンドラのmodel引数は元のモデルを受け取るので、引き続きそのデータにアクセスできると思います。

詳細については、バックボーンのドキュメントを参照してください - http://backbonejs.org/#Model-destroy

于 2012-11-27T22:00:45.957 に答える