私はBackboneを試していますが、少し問題が発生しました。
モデルの配列で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()を実行すると、これらのID値のない単純なオブジェクト(より有効な)が得られるため、解析が非常に困難になります。
このコレクションの投稿を解析できる唯一の方法は、次のようなことを行うことです。
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を避けますか?