私はバックボーンを試していますが、少し問題があります。なぜバックボーンのcollection.createが配列をPOSTしないのか分かりません
モデルの配列でCollection.createを使用すると、サーバーに投稿されたJSONは解析が非常に簡単ではないようです。
例:
var Person = Backbone.Model.extend({
initialize: function() {
this.on('all', function(e)
{ console.log("Person model all " + this.get("name") + ", event: " + e); }
);
}
});
var People = Backbone.Collection.extend({
initialize: function() {
this.on('all', function(e) { console.log("People collection event: " + e); });
},
url: "/models/",
model: Person
});
var people = new People();
people.create([ { "name":"joe", "age":24 }, { "name":"dan", "age":42 } ]);
私のサーバーは、次のJSONを受け取る:
これはのように、なぜそれありえない単純な配列である何{"0":{"name":"joe","age":24},"1":{"name":"dan","age":42}}
:それはあるので
[{"name":"joe","age":24},{"name":"dan","age":42}]
、その非常に難しいのは、物事を悪化させる理由は、Model.save()を実行すると単純なオブジェクトを取得するということです有効である)。
私はこのコレクションポストを解析することができた唯一の方法は次のように何かをすることです。これは、なぜ
for(var n in payloadobj)
{
var person = new Object();
person.id = parseInt(n, 10);
person.name = payloadobj[n].name;
person.age = payloadobj[n].age;
}
誰もが、私はちょうどにいくつかのものを上書きしようと思って、何かが足りないのです、知っていますより一貫性のあるものにするか、私は単にCollection.createを避けますか?
この奇妙な構成は、a)サーバーがBackboneが使用した内部IDを気にせず、(b)証明するために、モデルを一度に作成すると、cidがポストされず、適切なJSONオブジェクトがポストされます。「作成する」オブジェクトに複数のオブジェクトを作成することは避けてください。 – Dan
はい - 私はあなたのコードを誤読することに気付きました特に「作成」を呼び出してください)。だから、Backboneはあなたが望むものではない内部構造を作り出していました(それはCIDを作成していましたが、実際にはPersonオブジェクトを作成していませんでした)。私は私の答えを修正しました。 – WiredPrairie