在backbone.js中保存时仅发送更新的属性
代码如下:在backbone.js中保存时仅发送更新的属性,backbone.js,request,Backbone.js,Request,代码如下: var Person = Backbone.Model.extend({ defaults: { name: "name", surname: "surname" }, url: "/cgi-bin/test.pl", urlRoot: "/cgi-bin/test.pl" }); var person = null; $(document).ready(fu
var Person = Backbone.Model.extend({
defaults: {
name: "name",
surname: "surname"
},
url: "/cgi-bin/test.pl",
urlRoot: "/cgi-bin/test.pl"
});
var person = null;
$(document).ready(function(){
person = new Person();
person.set("name", "Alex");
person.save({'name':'Jonh'}, {patch: true});
});
当我做这件事的时候
person.save({'name':'Jonh'}, {patch: true});
我看到使用有效负载向服务器发送POST请求:
{“姓名”:“乔恩”,“姓氏”:“姓氏”}
但为什么姓氏属性也被传递?我不想寄。
我只想发送name属性。如何操作?
姓氏
被发送到服务器,因为它是模型的默认值之一。初始化模型时,主干将使用此对象预填充模型的属性。如果要在保存到服务器时跳过此属性,则必须使用不带默认值的模型属性创建一个对象,并将其传递给save
方法:
var values = {};
_.each(person.attributes, function(value, key){
if (person.defaults[key] !== value){
values[key]=value;
}
});
person.save(null, {attrs: values, patch: true});
您还可以从模型声明中删除对象
默认值
,这不是强制性的。姓氏
被发送到服务器,因为它是模型的默认值之一。初始化模型时,主干将使用此对象预填充模型的属性。如果要在保存到服务器时跳过此属性,则必须使用不带默认值的模型属性创建一个对象,并将其传递给save
方法:
var values = {};
_.each(person.attributes, function(value, key){
if (person.defaults[key] !== value){
values[key]=value;
}
});
person.save(null, {attrs: values, patch: true});
您还可以从模型声明中删除对象默认值
,这不是强制性的