使用Backbone,我尝试只更新一个属性并将其保存到服务器:
currentUser.save({hide_explorer_tutorial: 'true'});
但我不想发送所有其他属性,其中一些属性实际上是服务器端方法的输出,因此它们实际上不是setter函数的真正属性。
目前我使用unset(attribute_name)来删除所有我不想在服务器上更新的属性。问题是这些属性将不再可用于本地使用。
关于如何只将某些属性保存到服务器的建议?
使用Backbone,我尝试只更新一个属性并将其保存到服务器:
currentUser.save({hide_explorer_tutorial: 'true'});
但我不想发送所有其他属性,其中一些属性实际上是服务器端方法的输出,因此它们实际上不是setter函数的真正属性。
目前我使用unset(attribute_name)来删除所有我不想在服务器上更新的属性。问题是这些属性将不再可用于本地使用。
关于如何只将某些属性保存到服务器的建议?
5条答案
按热度按时间bihw5rsg1#
从 Backbone.js 0.9.9开始
只需将
{patch:true}
传递给save
函数,如下所示:从文档中,
如果您只想将更改后的属性发送到服务器,请致电model.save(attrs,{patch:true})。您将获得一个只包含传入属性的HTTP PATCH请求。
pbpqsu0x2#
您可以在模型上使用toJSON来实现这一点。
这将是保存时发送到后端的唯一属性。
34gzjxbg3#
事实上,有一种更简单的方法可以实现这一点
如果您查看backbone.js的第1145行,您将看到
这意味着您可以通过将数据放在选项中来覆盖xhr的数据部分。
由于 Backbone.js 保存需要model.save([属性],[选项])
但请记住,id等属性可能是正确保存所必需的
范例
针对您的特定情况
这对我来说做得很好,可以与任何带有XHR的 Backbone.js 一起使用,如获取,保存,删除,...
感谢您投票
7rtdyuoh4#
我想这在目前是不可能的:Backbone.js partial model update
rks48beu5#
这里有一个技巧,如果您在
options
参数上没有设置data
属性,而是设置了attrs
属性,那么请求负载将是attrs
属性值,而不是所有的模型属性。注意:这也适用于模型建立动作(POST)。
对于您的特定情况:
您可以在backbone.js 1.33 source code(第1405 - 1409行)中找到更多详细信息: