11

保存 Backbone 模型时究竟会发生什么?通过阅读此处的文档,这是我可以拼凑起来的最好的:

  1. model.save([attributes], [options])叫做
  2. 触发“更改”事件(但前提是属性是新的)
  3. 通知服务器更改?
  4. 一旦服务器返回,就会调用“同步”事件

但我是一个骨干菜鸟,我相信其他人可以做更好的解释工作。

我部分只是好奇会发生什么。我也很难理解 Backbone 是如何提出它发送到服务器的 JSON 对象的。我有一个单独的问题,JSON 对象不是我想要的,但我不知道如何更改它。

4

2 回答 2

8

详细过程可以在Backbone.Model.saveBackbone.sync的注释源代码中找到。

如果你忽略options.waitand options.silent,你的分解大部分是正确的。

当您发出model.save

  1. 设置传递给函数的属性,如果值发生更改,则会触发更改事件
  2. save将请求委托给model.syncBackbone.sync
  3. sync通过调用将数据序列化为 JSON 字符串JSON.stringify(model.toJSON())
  4. 一个 Ajax 请求被发送到服务器,一个新对象的 POST 请求,一个更新的 PUT 请求。目标 URL 由model.url(或collection.url/id)定义
  5. 当请求完成时,模型会使用服务器响应(如果有)进行更新,并相应地触发change事件。
  6. 调用成功或错误回调,sync如果未定义成功回调,则触发事件。

通常,您可以通过覆盖model.toJSONmodel.sync

于 2012-07-10T15:18:55.507 回答
-1

首先,建议你阅读backbone的源码,真的很简单。默认backbone和服务器端的交互是通过backbone.sync来实现的。

其次,可以再次trace debug model.save代码的方法,自然知道细节。我建议你从这里开始: http://backbonejs.org/examples/todos/index.html

于 2012-07-10T15:20:14.213 回答