所以我有一个看起来像这样的对象
{
first_name: 'Matt',
last_name: 'Damon',
movies: [{name: 'mov_name1', director: 'Sven'}, {name:'mov_name2', director: 'Joe'}]
}
有一个端点将返回此信息,我将使用fetch获取此数据并将其放入模型或ItemView中。 (我必须使用fetch因为我真的想要这些对象的集合,所以我将在集合上调用fetch。)但是,对象的表示不应该只是一个模型,它应该是一个模型(或ItemView) ,movies属性应该是一个集合,因为当我显示该对象的行时,它应该是一个带有模型和集合的CompositeView。我的问题是如何在模型上调用fetch之后将此对象表示转换为模型和集合?
对不起,解释一下有点令人困惑......
答案 0 :(得分:2)
对您的集合进行提取,然后为每个元素创建一个模型和一个集合,然后将其传递给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正确渲染它们。
希望这会有所帮助。
答案 1 :(得分:0)
如果使用另一个框架不是问题,那么有一个称为骨干关系。它旨在处理模型之间的关系。请参阅Backbone-Relational
中的动物园示例在示例中,有一个Zoo模型,模型有一个动物集合,由动物模型组成。通过Zoo模型上的单个提取,您将动物集合作为Backbone集合而不是普通对象数组。