所以我有一个看起来像的对象
{
first_name: 'Matt',
last_name: 'Damon',
movies: [{name: 'mov_name1', director: 'Sven'}, {name:'mov_name2', director: 'Joe'}]
}
有一个端点将返回此数据,我将使用fetch获取此数据,并将其放入模型或ItemView中。(我必须使用fetch,因为我真的想要这些对象的集合,所以我会对集合调用fetch。)但是,对象的表示不应该是单独的模型,它应该是模型(或ItemView),movies属性应该是集合,因为当我显示此对象的行时,它应该为具有模型和集合的CompositeView。我的问题是,在对模型调用获取之后,如何将此对象表示转换为模型和集合?
抱歉,解释起来有点混乱。。。
获取集合,然后为每个元素创建一个模型和一个集合,然后将其传递给compositeView
像这个
mycollection = new MyCollection();
mycollection.fetch();
mycollection.each(function(item){
var actorModel = new ActorModel({firstName : item.get('first_name'),
lastname: item.get('last_name')});
var moviesCollection = new MoviesCollection(item.get('movies'));
var xCompositeView = new XCompositeView({model:xmodel,
collection:moviesCollection});
});
通过这种方式,Compositeview可以获得一个模型和一个集合,并且可以使用itemView为每个电影正确地渲染它们。
希望这能有所帮助。
如果使用另一个框架不是问题,那么有一个框架叫做主干关系框架。它旨在处理模型之间的关系。请参阅骨干关系中的动物园示例
在本例中,有一个动物园模型,模型有一个由动物模型组成的动物收藏。使用Zoo模型上的单个提取,您将拥有作为Backbone集合的动物集合,而不是普通对象的阵列。