是否有一种安静的方式告诉Backbone只将一个属性保存到服务器?

时间:2013-02-07 15:53:41

标签: backbone.js backbone-relational

我有一个附加到模型的集合。当我点击一个按钮时,我希望能够告诉骨干只将一个属性(包含该集合)保存到服务器

m.Survey = m.BaseModel.extend({
    relations: [{
        type: Backbone.HasMany,
        key: 'invites',
        relatedModel: 'APP.Models.SurveyInvite',
        collectionType: 'APP.Collections.SurveyInvites',
        //save invites separately
        includeInJSON: false, 
        reverseRelation: {
            key: 'survey',
            //We don't want to list the survey when doing toJSON()
            includeInJSON: false
        }
    }],
    //need this method
    saveInvites: function(){
         this.saveOnly('invites');
    });
});

我希望它发送到服务器:

POST / api / surveys / 123 /

{
    invites: [
    {<invite1>}, {<invite2>}, {<invitex>}
    ] 
}

1 个答案:

答案 0 :(得分:3)

您可以将Model.savepatch选项一起使用:

saveInvites: function(){
     this.save({invites:this.get('invites')}, {patch:true});
});

而不是POST请求,这将发送HTTP PATCH。既然你要求RESTful方式,补丁就是这里使用的正确动词。如果您的服务器无法处理修补程序请求,您可以使用emulateHTTP选项强制它POST

saveInvites: function(){
     this.save({invites:this.get('invites')}, {patch:true, emulateHTTP:true});
});