0

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

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');
    });
});

我希望它发送到服务器:

发布 /api/surveys/123/

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

1 回答 1

3

您可以使用Model.save以下patch选项:

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

POST将发送一个HTTP PATCH. 由于您要求采用 RESTful 方式,因此 patch 是此处使用的正确动词。如果您的服务器无法处理补丁请求,您可以POST使用以下emulateHTTP选项强制它:

saveInvites: function(){
     this.save({invites:this.get('invites')}, {patch:true, emulateHTTP:true});
});
于 2013-02-07T22:12:22.623 回答