我有一个应用程序,用户可以在其中绘制元素,删除它们,移动它们,调整它们等等。我希望能够在我的应用程序中撤消/重做几乎每一个动作,而无需刷新页面。
因此,例如,当我通过按退格键移除元素时,我希望能够通过按'CMD + Z'撤消该操作,并按'CMD + Shift + Z'重做它。
JS
// Remove selected element
$(window).keydown(function(e) {
if (e.keyCode == 8) {
$(".ui-selected").remove();
return false;
}
});
我需要一个解决方案,我可以重复使用我的应用中的几乎所有操作。我不确定这是否会通知解决方案,但我将所有这些更改存储在jStorage的本地存储中。
答案 0 :(得分:1)
大部分时间都是使用命令模式完成的,其中对于每个“do”命令,“undo”命令存储在一个数组中,并且向后和向前遍历会调用这些命令。
http://jsperf.com/undo-redo有一个带有性能基准的撤消脚本列表。当我写https://github.com/ArthurClemens/Javascript-Undo-Manager时,我没有使用任何这些,因为我有自己的痒一会儿。