2011-05-11 5 views
5

backbone.jsを使用してデータ入力が集中するRIAを構築しています。私の最初の計画は、自分のUIに「保存」と「キャンセル」ボタンを設け、ユーザーが保存をヒットしたときにのみ大きなチャンクでモデルを保存することでした。ヒットキャンセルは、単にサーバーからモデルをリロードするだけです。このように、ユーザーは不可逆的な間違いを心配する必要はありません。backbone.jsを使用している場合、 "元に戻す/やり直しで自動保存する"と "保存/元に戻す"ボタン

しかし、モデルの変更を「監視」して、モデル値を元に戻すときにビューが正しく更新されることを考えれば、元に戻す/やり直しを実装することはおそらくそれほど難しくないと認識しています。元に戻す/やり直しができたら、モデルをサーバーに即座に保存することを選択します。

バックボーンの2つのアプローチの1つが好まれていますか?バックボーンのスタイルのMVCを使って取り消し/やり直しを実装するにはどうすればよいでしょうか?

答えて

5

あなたはこの回答のためにしばらくお待ちしております。既に回答している可能性があります。私にはコードはありませんが、いくつかのコンセプトが頭の中で私を打ちました。

高レベルから、私は元に戻すことができたベースモデルを持っていました。あるいは、あなたはモデルを元に戻すことができるようにするために何らかの形のミックスインを使うことができました。アンドゥの実装は、コマンドパターンを使用してマルチレベルのアンドゥ「スタック」を形成します。

私がこれを実装していた場合、元に戻すことのできるモデルにコマンドモデルのbackbone.jsコレクションを装備している可能性があります。これらのコマンド・モデルは、取り消し可能モデルへの変更をカプセル化し、モデルからの変更イベントとともに作成されます。元に戻すことができるモデルへの変更を元に戻すには、先頭のコマンドをオフにして元に戻すことができるモデルに取り消しを適用します。サーバーの更新によって、コマンドの集合が抹消されます。

これらすべての問題の1つは、元に戻すことで発生する変更をどのように管理するかです。これらは、スタックの先頭に元に戻すコマンドを生成すべきではありません。

これが役に立ちます。

+0

サンプルコードを入力してください。 –

+0

申し訳ありませんが、2年前に私がbackbone.jsをプロジェクトに使用していたときにこの質問に答えました。私は本当にbackbone.jsに戻ったことはありませんので、私は一緒にcobbleしない例を信頼しません。 –

関連する問題