我嘗試骨幹,並創下了一點問題。不明白爲什麼骨幹collection.create犯規張貼陣列
如果我使用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?
它仍然是非常奇怪的是,它以這種方式張貼這個奇怪的建築到服務器A)服務器不關心內部ID骨幹網採用了和b)證明(a),當你剛剛創建一個模型在同一時間,然後它不會發布CID,並張貼正確的JSON對象......我認爲在一個「創建」創建多個對象應避免 – Dan
是 - 我意識到,我誤解你代碼(特別呼叫'創建')。所以,Backbone創建了一個完全不是你想要的內部結構(它仍然創建了一個CID,但它並不真正創建一個Person對象)。我已經解決了我的答案。 – WiredPrairie