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;
}
我在我的 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;
}