6

我正在使用backbone.js 构建一个数据输入密集型RIA。我的第一个计划是在我的 UI 上设置“保存”和“取消”按钮,并且只在用户点击保存时将我的模型大块保存。点击取消只会从服务器重新加载模型。这样,用户就不必担心犯不可挽回的错误。

然而,我现在意识到实现撤消/重做可能不会那么困难,因为在恢复模型值时“观察”模型的更改并让视图正确更新自身是多么容易。如果我有撤消/重做,我会选择让我的模型立即保存到服务器。

骨干网喜欢这两种方法之一吗?使用主干的 MVC 风格实现撤消/重做的好方法是什么?

4

1 回答 1

5

这个答案你已经等了一段时间了,也许你已经回答过了。我没有代码,但有几个概念让我印象深刻。

从高层次上讲,我将有一个可撤销的基本模型——或者您可以使用某种形式的 mixin 来赋予模型可撤销的能力。撤消的实现将使用命令模式来形成多级撤消“堆栈”。

如果我正在实现这个,我想我可能会为一个可撤销的模型配备一个命令模型的主干.js 集合。这些命令模型将封装对可撤销模型的更改,并将与来自模型的更改事件一起创建。要撤消对可撤消模型的更改,您将弹出顶部命令并将其撤消应用于可撤消模型。服务器刷新将清除命令集合。

所有这一切的一个复杂因素是如何管理由于撤消而发生的更改——这些更改本身不应该在堆栈顶部生成撤消命令。

希望这可以帮助。

于 2011-05-28T02:52:34.780 回答