保存 Backbone 模型时究竟发生了什么?这是我可以通过阅读文档拼凑出的最好结果 here :
model.save([attributes], [options])
被调用- 触发“更改”事件(但前提是属性是新的)
- 服务器收到更改通知?
- 一旦服务器返回,就会调用“sync”事件
但我是 Backbone 菜鸟,我相信其他人可以更好地解释。
我部分只是好奇会发生什么。我也无法理解 Backbone 如何提出它发送到服务器的 JSON 对象。我有一个 separate problem JSON 对象不是我想要的,但我不知道如何更改它。
最佳答案
详细过程可以引用annotated source code对于 Backbone.Model.save和 Backbone.sync .
如果您忽略 options.wait
和 options.silent
,您的分解大部分是正确的。
当您发出 model.save
时:
- 传递给函数的属性已设置,如果值发生更改,则会触发更改事件
save
将请求委托(delegate)给model.sync
或Backbone.sync
sync
通过调用JSON.stringify(model.toJSON())
将数据序列化为 JSON 字符串
- Ajax 请求发送到服务器,POST 请求新对象,PUT 更新。目标 URL 由
model.url
(或collection.url/id
)定义 - 当请求完成时,模型会根据服务器响应进行更新(如果有),并相应地触发一个
change
事件。 - 调用成功或错误回调,如果未定义成功回调,则触发
sync
事件。
通常,您可以通过覆盖 model.toJSON
或 model.sync
来自定义此行为
关于javascript - 保存 Backbone 模型时究竟发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11415946/