保存Backbone模型时会发生什么?

时间:2012-07-10 14:47:39

标签: javascript backbone.js

保存Backbone模型时会发生什么?通过阅读文档here

,我可以拼凑起来
  1. model.save([attributes], [options])被称为
  2. 触发“更改”事件(但仅在属性为新的情况下)
  3. 服务器会收到更改通知吗?
  4. 服务器返回后调用“sync”事件
  5. 但我是一名Backbone noob,我相信其他人可以更好地解释。

    我部分只是好奇发生了什么。我也无法理解Backbone如何提供它发送给服务器的JSON对象。我有一个separate problem,其中JSON对象不是我想要的,但我不知道如何更改它。

2 个答案:

答案 0 :(得分:8)

详细流程可在annotated source codeBackbone.Model.saveBackbone.sync中找到。

如果您忽略options.waitoptions.silent,那么您的分解大多是正确的。

发出model.save时:

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

    来自定义此行为

答案 1 :(得分:-1)

首先,我建议你阅读骨干的源代码,非常简单。通过backbone.sync实现默认骨干和服务器端交互。

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