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

tas*_*enb 4 javascript rest sync backbone.js http-patch

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

Vit*_*huk 11

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

'create': 'POST',
'update': 'PUT',
'patch':  'PATCH',
'delete': 'DELETE',
'read':   'GET'
Run Code Online (Sandbox Code Playgroud)