0
我想解析一個多級json文件,創建一個模型,然後將該模型添加到骨幹集合,但我似乎無法弄清楚如何將模型推送到集合。這應該是一個很容易解決的問題,我似乎無法弄清楚。在此先感謝您的幫助。以下是我的模型和收集代碼:無法添加解析的JSON到骨幹集合
var Performer = Backbone.Model.extend({
defaults: {
name: null,
top5 : [],
bottom5 : []
},
initialize: function(){
console.log("==> NEW Performer");
// you can add event handlers here...
}
});
var Performers = Backbone.Collection.extend({
url:'../json_samples/performers.json',
model:Performer,
parse : function(data) {
// 'data' contains the raw JSON object
console.log("performer collection - "+data.response.success);
if(data.response.success)
{
_.each(data.result.performers, function(item,key,list){
console.log("running for "+key);
var tmpObject = {};
tmpObject.name = key;
tmpObject.top5 = item.top5;
tmpObject.bottom5 = item.bottom5;
var tmpModel = new Performer(tmpObject);
this.models.push(tmpModel);
});
}
else
{
console.log("Failed to load performers");
}
}
});
是什麼'data.result.performers'樣子?你覺得'this'在'_.each'回調中呢?永遠不要修改集合的「模型」屬性,您將使集合處於不一致狀態,使用集合的方法來添加新模型。 –
對於mu說的同樣,但也不是'parse'需要工作的方式是將數據結構作爲參數並返回不同的結構作爲返回值。它根本不應該使用'this'。爲了修正你的'parse'代碼,我們需要看到'data.result.performers'數據的一個樣本,因爲你的代碼只是把它當作一個對象,而把它當作一個對象數組來對待。 –
明白了,我剛剛使用了var這個技巧,並解決了這個問題。我試圖推動模型,因爲正常this.push不工作,現在我知道爲什麼。謝謝! –