4

模型章节的保存方法中,Backbone.js 文档说:

相反,如果您只想将更改后的属性发送到服务器,请调用 model.save(attrs, {patch: true})。您将收到仅包含传入属性的服务器的 HTTP PATCH 请求。

来源:http ://backbonejs.org/#Model-save

我找不到一个很好的解释这实际上是如何工作的(如果它真的有效!)。它应该只使用传入的属性向服务器发送一个 PATCH 请求,但它总是向服务器发送一个 POST 请求,其中包含模型的所有属性。使用 Firebug,我在更改时看不到任何区别Backbone.emulateHTTP:Firebug 总是使用 save 方法显示 POST 请求。

我在这里创建了一个测试:http: //jsfiddle.net/r9kXL/ 注意url当然不存在,但重要的是在Firebug中查看POST请求。如您所见,如果您尝试仅发送一个属性,它将始终将所有内容发送到服务器,从而使该选项完全无用。

为什么 Backbone 开发人员提供此选项,它的用途是什么?你能举个例子来说明它的用法吗?

4

1 回答 1

11

发生这种情况是因为您的模型isNew和 Backbone “创建新实例”(方法create)而不是修补现有实例(方法patch)。看看 - http://jsfiddle.net/r9kXL/1/

'create': 'POST',
'update': 'PUT',
'patch':  'PATCH',
'delete': 'DELETE',
'read':   'GET'
于 2013-06-28T18:57:07.820 回答