我在Backbone JS中的集合的初始人口有一些問題。Backbone JS:獲取集合 - 使用JSON響應格式的問題
在開發myCollection
沒有從服務器獲取數據,我只是通過它在這樣的:
app.myCollection.reset([
{ person: 'Sally'},
{ person: 'Peter'},
{ person: 'Paul'},
{ person: 'Wilma'}
]);
做一個console.log(app.myCollection);
向我表明的收集是正確填充,因爲它是length
爲4:
s {length: 4, models: Array[4], _byId: Object}
現在我想從服務器獲取數據,響應看起來是這樣的:
[
{
"person": "Sally"
},
{
"person": "Peter"
},
{
"person": "Paul"
},
{
"person": "Wilma"
}
]
不幸的是,出現了問題,因爲length
屬性現在爲0,但我可以在對象中查找數據。
s {length: 0, models: Array[0], _byId: Object}
我不喜歡這樣寫道:
app.myCollection.fetch({reset: true});
對我來說,它看起來而非陣列內的每個對象只喜歡外數組被「映射」到模型。
我能做些什麼來防止這種情況發生?
編輯 正如評論中所建議的那樣,我在響應中包含了一個「id」屬性。現在,它看起來像這樣:
[
{
"id": 1,
"person": "Sally"
},
{
"id": 2,
"person": "Peter"
},
{
"id": 3,
"person": "Paul"
},
{
"id": 4,
"person": "Wilma"
}
]
不幸的是,事情仍然是不正確的,因爲收集現在看起來是這樣的:
s {length: 0, models: Array[0], _byId: Object}
_byId: Object
length: 4
models: Array[4]
__proto__: s
所以你看,一個長度爲0,另外一個這可能是因爲我現在只是鏈接到一個json文件?
在提取之前,在您的集合上將'idAttribute'設置爲'「person」'。要麼這樣做,要麼讓服務器響應響應數組中每個對象的唯一「ID」屬性。 – idbehold
實際上,您需要將其設置在模型上,而不是集合中。另外,要確定你的「人」值是獨一無二的 –
@idbehold謝謝,我只是包含了一個「id」屬性,因爲這看起來更清晰和安全,但收集仍然看起來很奇怪。我編輯了這個問題。 – Sven