バックボーン/マリオネット アプリでフォームを送信した後、既存のモデルを保存する際に問題が発生しています。
そこで、フォームを送信し、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);
},
私は何を間違っていますか?バックボーンの保存機能は、変更された属性のみを更新すると思っていました。データ オブジェクトがモデル属性のセットアップにマップされるように見えます。彼らはただ更新するべきではありませんか?既存のモデルの保存方法について何か理解していませんか?