1

所以我有一个看起来像这样的对象

{
  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 后将此对象表示转换为模型和集合?

抱歉,解释起来有点混乱……

4

2 回答 2

2

获取您的集合,然后为每个元素创建一个模型和一个集合,然后您可以将其传递给复合视图

像这样的东西

  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 正确渲染它们。

希望这可以帮助。

于 2013-07-16T04:23:16.687 回答
0

如果使用另一个框架没有问题,那么有一个称为骨干关系。它旨在处理模型之间的关系。请参阅Backbone-Relational中的动物园示例

在示例中,有一个 Zoo 模型,而模型有一个由动物模型组成的 Animal Collection。通过 Zoo 模型上的一次提取,您将拥有动物集合作为 Backbone 集合,而不是普通对象的数组。

于 2013-07-16T11:38:10.543 回答