如何跟踪未同步到服务器的模型更改?

How do I keep track of model changes that aren't synced to the server?

本文关键字:服务器 模型 同步 何跟踪 跟踪      更新时间:2023-09-26

我有一个表单,它通过执行许多set方法的更改事件更新我的模型。

model.set({Name: newname });

同样可以用Derick Bailey的出色的modelbinding插件自动实现。

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

因此,如果我现在通过:

离开表单
  • 浏览器返回按钮
  • 导航栏中的其他按钮打开另一个视图

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

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

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

*不理想:用户导航远离表单,表明他希望不保存它的数据,在这里我试图破解保存。

我如何实现这个重置模型的状态,它是在改变形式之前?

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