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