骨干取一个返回奇怪数据的模型

时间:2015-08-19 11:12:39

标签: javascript backbone.js backbone-model

我在我的骨干应用程序中从我的服务器获取模型数据,

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
 }

为什么会这样?

1 个答案:

答案 0 :(得分:1)

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

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

  

该函数传递原始响应对象,并应返回要在模型上设置的属性hash。

所以在你的模型中

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