1

我有一个表单,它使用执行很多set方法的更改事件来更新我的模型。

model.set({Name: newname });

使用 Derick Bailey 出色的模型绑定插件可以自动实现相同的功能。

无论如何,模型在更改形式时会不断更新。但是,除非我单击实际执行model.save();调用的保存按钮,否则这些更改都不会进入数据库。

因此,如果我现在通过以下方式离开表单:

  • 浏览器的后退按钮
  • 导航中的其他按钮打开另一个视图

很明显,模型是用它的新名称保存的,但它从未保存到数据库中,(刷新F5显示)

我正在寻找一个有用的解决方案来解决这个问题;到目前为止,我一直在想:

  • 在表单元素的任何模糊事件上添加一个model.save()(仍然会导致对服务器的许多保存调用仅针对 1 个模型 *不理想
  • 试图在表单退出时破解 *不理想
  • 试图将模型恢复到原始状态(模型重置或类似)

*不理想:用户确实离开了表单,表明他不希望保存它的数据,在这里我无论如何都试图破解保存。

我将如何将模型重置为更改表单之前的状态?

4

1 回答 1

1

如果需要,您可以保存模型的初始状态。但是您正在寻找的真正解决方案是调用set而不是save. 它将执行您的验证而不同步到您的持久层(即数据库)。它还将触发change事件,以便您的视图可以做出相应的反应。然后,当您准备好保存时,您可以。

于 2011-11-16T23:17:27.467 回答