如何使用Backbone.js部分更新(补丁:true)?

时间:2013-06-28 17:48:24

标签: javascript rest backbone.js sync http-patch

模型一章的保存方法中,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开发人员提供这些选项以及它的用途是什么?你能举例说明它的使用吗?

1 个答案:

答案 0 :(得分:11)

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

'create': 'POST',
'update': 'PUT',
'patch':  'PATCH',
'delete': 'DELETE',
'read':   'GET'