我有问题同步从服务器接收的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
很好的答案,谢谢! –