在模型一章的保存方法中,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开发人员提供这些选项以及它的用途是什么?你能举例说明它的使用吗?
答案 0 :(得分:11)
这是因为您的模型isNew
和Backbone“创建新实例”(方法create
)而不是修补现有实例(方法patch
)。看看 - http://jsfiddle.net/r9kXL/1/
'create': 'POST',
'update': 'PUT',
'patch': 'PATCH',
'delete': 'DELETE',
'read': 'GET'