Backbone和Marionette约定,用于表示作为对象和集合的项视图



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

{
  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集合的动物集合,而不是普通对象的阵列。

最新更新