在我的主干/牵线木偶应用程序中提交表单后,我在保存现有模型时遇到问题。
所以,我提交表单并使用backbone.syphon 创建表单数据的表示。我构建的对象如下所示:
{languages: {
{
de_DE: {
default: false
enabled: true
},
en_US: {
...
}
...
}
}
我正在尝试将其保存到具有如下属性的主干模型中:
attributes: {
id: "5"
languages: {
de_DE: {
default: false,
label: "German"
language: "de_DE"
selected: false
},
en_CA: {
...
},
...
}
}
问题是,当我model.save(data)
使用上述数据结构为我的数据保存现有模型时,默认和标签实例已从我的模型中完全删除。它们甚至没有发送到服务器。尽管它们确实位于previousAttrs
对象中,但它们只是被完全移除。
我的模型同步设置的实例如下所示:
sync: function(method, model, options){
var baseUrl = window.location.origin+'/qp-api/v1/master-app/';
var config = {}
switch(method){
case "create":
break;
case "read":
config = _.extend(config, {
method: "GET",
url: baseUrl+this.id+'/languages'
});
break;
case "update":
config =_.extend({
method: "PUT",
url: baseUrl+this.id+'/languages'
});
break;
case "delete":
break;
};
options = _.extend(options, config);
return Backbone.Model.prototype.sync.call(this, method, model, options);
},
我究竟做错了什么?我认为主干的保存功能只会更新更改的属性。在我看来,我的数据对象应该映射到我的模型属性的设置。他们不应该只是更新吗?我不了解现有模型的保存方式吗?