【问题标题】:"Autosave with undo/redo" vs "Save/Revert buttons" when using backbone.js使用backbone.js时的“撤消/重做自动保存”与“保存/恢复按钮”
【发布时间】:2011-08-23 17:33:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: save backbone.js undo autosave


    【解决方案1】:

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

    从高层次上讲,我将有一个可撤消的基本模型——或者您可以使用某种形式的 mixin 使模型具有可撤消的能力。 undo 的实现将使用命令模式来形成多级 undo 'stack'。

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

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

    希望这会有所帮助。

    【讨论】:

    • 抱歉,两年多前我在项目中使用backbone.js 时回答了这个问题。从那以后我真的再也没有回到过backbone.js,所以我不会相信任何我不会拼凑起来的例子。
    猜你喜欢
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 2013-07-10
    相关资源
    最近更新 更多