Backbone Js:我如何跟踪未与服务器同步的模型更改?

时间:2011-11-16 23:11:18

标签: javascript javascript-events backbone.js model-binding

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

model.set({Name: newname });

同样可以通过Derick Bailey精彩的modelbinding plugin

自动实现

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

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

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

立即清楚,模型以其新名称保存,但它从未保存到数据库中,(使用F5刷新显示)

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

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

* 不理想:用户确实离开表单,表示他希望不保存它的数据,而且我在这里试图破解保存。

如何在更改表单之前将模型重置为它所处的状态。

1 个答案:

答案 0 :(得分:1)

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