Javascript 主干获取返回奇怪数据的模型
我正在从我的服务器获取模型数据,就像在我的主干应用程序中一样Javascript 主干获取返回奇怪数据的模型,javascript,backbone.js,backbone-model,Javascript,Backbone.js,Backbone Model,我正在从我的服务器获取模型数据,就像在我的主干应用程序中一样 var projectModel=newapp.Models.Project({id:1001}) projectModel.fetch() 获取工作正常,我从服务器获取数据,但数据的格式不是我期望的格式,项目是包含其他模型和集合的模型,但是从服务器返回到模型中的内容是这样的 projectModel.set('workers', new App.Collections.Users(projectModel.get('workers'
var projectModel=newapp.Models.Project({id:1001})
projectModel.fetch()代码>
获取工作正常,我从服务器获取数据,但数据的格式不是我期望的格式,项目是包含其他模型和集合的模型,但是从服务器返回到模型中的内容是这样的
projectModel.set('workers', new App.Collections.Users(projectModel.get('workers')));
{
项目名称:“测试项目”
项目经理:数组[5],
工人:数组[10]
}
这意味着每次我为一个项目执行fetch时,我都必须设置每个属性,这些属性必须是一个模型或一个类似这样的集合
projectModel.set('workers', new App.Collections.Users(projectModel.get('workers')));
在我的模型中,我确实有一个initialise fnction,我在其中执行所有这些设置,但在获取时似乎忽略了这一点
当然有更好的方法来设置fetch属性,而不是单独检查它们
如果像这样在模型中过度使用parse方法
parse: function(response, options) {
this.set('workers', new App.Collections.Users(response.workers));
}
这确实会在项目模型中将worker作为集合返回,但它会忽略单个属性,如name,因此我希望它会返回
{
name : Test Project,
workers : s //this is how console.log outputs it
},
但我得到的一切
{
workers : s //this is how console.log outputs it
}
这是为什么?您可以重写模型解析方法,以实现每次获取模型时自动执行的行为
函数被传递给原始响应对象,并且应该返回要在模型上设置的属性哈希
所以在你的模型中
parse: function(response, options) {
response.workers = new App.Collections.Users(response.workers));
return response;
}
谢谢,这似乎部分起作用了,请看我的编辑。@Udders您必须在parse方法中返回整个属性散列,修改您想要修改的属性。我已经编辑了我的答案