我知道这个问题已经讨论过好几次了,但是我找不到它的许多方面之一的答案,我将在这里尝试解释。
模型save()在客户端和服务器之间保持同步。Backbone.js 推动您以以下两种方式之一使用它(afaik):
- 保存模型的所有项目:这会将所有内容发送到服务器,甚至包括仅在客户端使用的属性和未更改的属性。这是新模型的默认值(
model.isNew()返回时true)。 - Save with
patch:true只会将模型的更改属性发送到服务器。在 Backbone 中,这意味着只发送返回的属性changedAttributes()。
关键是changedAttributes()仅返回自上次change事件以来的更改。这对于不是一直更新的模型很有用,实际上可以负担得起对任何更改自动发出 ajax 请求。
但是,如果您有一个不断变化的模型(例如,代码/文本编辑器或可以拖放并应跟踪其位置的元素),则不能只保存每个change事件。您需要按时间间隔保存自上次调用以来所有更改的属性save()。
你认为 Backbone.js 是否真的为这种同步提供了很好的支持?Bakcbone.js 是否跟踪自上次以来 save()的变化(而不仅仅是自上次change事件以来)?或者你必须“多次”这样做?