Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在backbone.js中保存时仅发送更新的属性_Backbone.js_Request - Fatal编程技术网

在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});
您还可以从模型声明中删除对象
默认值
,这不是强制性的