我在我的骨干应用程序中从我的服务器获取模型数据,
var projectModel = new App.Models.Project({ id: 1001 });
projectModel.fetch();
fetch工作,我从服务器获取数据,但数据不是我期望的格式,项目是包含其他模型和集合的模型,但是从服务器返回到模型的是像这样,
{
project_name: "A Test Project"
project_managers: Array[5],
workers: Array[10]
}
这意味着每次我对项目进行提取时,我都必须设置每个需要成为模型或类似集合的属性,
projectModel.set('workers', new App.Collections.Users(projectModel.get('workers')));
在我的模型中,我确实有一个初始化函数,我在这里进行了所有这些设置,但这似乎在获取时被忽略了。
当然,有一种更好的方法来设置我的抓取属性而不是单独检查它们吗?
如果过度使用模型中的解析方法,
parse: function(response, options) {
this.set('workers', new App.Collections.Users(response.workers));
}
这确实将工作者作为项目模型中的集合返回,但它忽略了像name这样的单个属性,所以我希望这会返回,
{
name : Test Project,
workers : s //this is how console.log outputs it
},
但是我回来了,
{
workers : s //this is how console.log outputs it
}
为什么会这样?
答案 0 :(得分:1)
您可以覆盖模型解析方法,以便在每次获取模型时自动执行此行为
http://backbonejs.org/#Model-parse
该函数传递原始响应对象,并应返回要在模型上设置的属性hash。
所以在你的模型中
parse: function(response, options) {
response.workers = new App.Collections.Users(response.workers));
return response;
}