我有問題同步從服務器接收的JSON數據與我的意見後提取。骨幹意見不能與提取json
我沒有「mainmodel」的集合,因爲我只用一個「mainmodel」在時間,但衆多「爲MyModel」工作,無論如何,結構如下:
var mymodel = Backbone.Model.extend({
defaults: {k1:"",
k2:"",
k3:""}
});
var collection = Backbone.Collection.extend({model:mymodel,});
var mainmodel = Backbone.Model.extend({
defaults: {v1:"",
v2:"",
v3:"",
v4:new collection()
});
創建父視圖中渲染函數的「mymodel」的嵌套視圖。這隻有在我使用新模型時纔有效。
// My ParentView render function
render: function() {
for (var i = 0; i < this.model.v4.length;i++) {
var view = new MyModelView({model:this.model.v4.at(i)});
this.$el.append($(view.render().el));
}
this.$el.append(this.template(this.model.toJSON()));
return this;
},
// The MyModelView render function below
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this;
},
現在,上述工程,如果我打開我的應用程序,並從那裏創建模型。但是,如果我打開我的應用程序並提供一個id,我將對服務器進行讀取,檢索數據,然後創建一個新的ParentView,最終得到一個錯誤,指出「this.model.v4.at不是函數」。啊。
所以,現在,如果我改變第一渲染功能是,在(I)改變爲[I]
var view = new MyModelView({model:this.model.v4[i]});
並更改第二渲染功能,刪除的toJSON,是:
this.$el.html(this.template(this.model));
它呈現。但是我仍然無法繞過視圖而沒有錯誤。沒有驚喜。我已經使用console.log(JSON.stringify(this.model));當他們到達parentView和MyModelView。返回的JSON看起來像這樣,無論是獲取還是創建。
{"v1":"val1",
"v2":"val2,
"v3":"val3",
"v4":[{"k1":"key1","k2":"key2","k3","key"}, { ... }, { ... }]
}
JSON數據結構看起來是相同的。我認爲JSON格式不正確,所以我在將模型交給視圖之前嘗試使用JSON.parse,但這並不起作用。也許我很興奮,但我原本以爲我有一個JSON格式問題,但現在我不知道。服務器將內容作爲「application/json」返回。
編輯:v1,v2,v3的JSON值正確呈現。
任何想法?
就是這樣!現在工作很好。謝謝! – fbynite
很好的答案,謝謝! –