コマンド パターンを使用します。
コマンド オブジェクトは、複数レベルのアンドゥを実装するのに役立ちます。プログラム内のすべてのユーザー アクションがコマンド オブジェクトとして実装されている場合、プログラムは最近実行されたコマンドのスタックを保持できます。ユーザーがコマンドを元に戻したい場合、プログラムは単純に最新のコマンド オブジェクトをポップし、その undo() メソッドを実行します。
基本的な JavaScript の実装は次のようになります。
function command(instance) {
this.command = instance;
this.done = [];
this.execute = function execute() {
this.command.execute();
this.done.push(this.command);
};
this.undo = function undo() {
var command = this.done.pop();
command.undo();
};
}
これをテストするには、単純な DOM を構築します。
<ul>
<li>first</li>
</ul>
使用するコマンド オブジェクトを定義します。このようなオブジェクトには、実行ロジックと、DOM の以前の状態を再構築するための追加の動作が含まれている必要があります (少なくともこのサンプル ケースでは)。
var appendcommand = new command({
execute: function(){
$('ul').append('<li>new</li>');
},
undo: function(){
$('ul li:last').remove();
}
});
実行後:
appendcommand.execute();
あなたのページはから変わります
に
次の実行中:
appendcommand.undo();
このページを元の状態に変換します。