1

多くのsetメソッドを実行する変更イベントでモデルを更新するフォームがあります。

model.set({Name: newname });

Derick Bailey の素晴らしいmodelbinding pluginを使用すると、同じことが自動的に実現できます。

とにかく、フォームを変更すると、モデルは常に更新されます。しかし、実際にmodel.save();呼び出しを実行する保存ボタンをクリックしない限り、これらの変更はデータベースに反映されません。

したがって、次の方法でフォームから移動した場合:

  • ブラウザの戻るボタン
  • 別のビューを開くナビゲーションの他のボタン

モデルは新しい名前で保存されましたが、データベースには保存されていないことがすぐにわかります (でリフレッシュするとF5表示されます) 。

この問題の有効な解決策を探しています。これまで私は考えてきました:

  • model.save()フォーム要素の on any blur イベントを追加する(まだ、たった 1 つのモデルに対してサーバーへの多くの保存呼び出しが発生します *理想的ではありません)
  • フォームの終了時にセーブをハックしようとしています *理想的ではありません
  • モデルを元の状態に戻そうとしています (モデルのリセットなど)。

*理想的ではありません: ユーザーはフォームから離れて移動し、データを保存したくないことを示しています。ここでは、とにかく保存をハックしようとしています。

モデルをフォームを変更する前の状態にリセットするにはどうすればよいですか?

4

1 に答える 1

1

必要に応じて、モデルの初期状態を保存できます。しかし、あなたが探している本当の解決策は、のset代わりに呼び出すことですsave。永続化レイヤー (データベースなど) と同期せずに検証を実行します。また、changeイベントをトリガーするため、ビューはそれに応じて反応できます。次に、保存する準備ができたら、保存できます。

于 2011-11-16T23:17:27.467 に答える