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

Jas*_*ett 11 javascript backbone.js

保存Backbone模型时会发生什么?通过阅读这里的文档,我可以拼凑起来:

  1. model.save([attributes], [options]) 叫做
  2. 触发"更改"事件(但仅当属性是新的时)
  3. 服务器会收到更改通知?
  4. 一旦服务器返回,就会调用"sync"事件

但我是一个Backbone noob,我相信别人可以更好地解释.

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

nik*_*shr 8

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

如果你忽视options.waitoptions.silent,你的分解主要是正确的.

当你发出model.save:

  1. 设置传递给函数的属性,如果值更改,则触发change事件
  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.toJSON或自定义此行为model.sync

  • 在Backbone 0.9.9中改变了第六步.请参阅http://backbonejs.org/#changelog Backbone.sync中的合并"同步"和"错误"事件.无论是否存在成功或错误回调,它们现在都会被触发. (2认同)