backbone 获取返回奇怪数据的模型

backbone fetching a model returning strange data

我在我的 backbone 应用程序中像这样从我的服务器获取模型数据,

var projectModel = new App.Models.Project({ id: 1001 });<br> projectModel.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));
}

这确实 return workers 作为项目模型中的集合,但它忽略了名称等单个属性,因此我希望它 returned,

{
  name : Test Project,
  workers : s //this is how console.log outputs it
},

但我回来了,

{
    workers : s //this is how console.log outputs it
 }

这是为什么?

您可以覆盖您的模型解析方法来实现此行为,以便在您每次获取模型时自动执行

http://backbonejs.org/#Model-parse

The function is passed the raw response object, and should return the attributes hash to be set on the model.

所以在你的模型中

parse: function(response, options) {
  response.workers = new App.Collections.Users(response.workers));
  return response;
}