有什么方法可以在Marionette CollectionView中创建单个唯一视图?我的意思是这样的:

集合视图


StartView(这是唯一视图)
常规ItemView
常规ItemView
常规ItemView
等等


唯一的意思是,“开始ItemView”必须使用唯一的模板,并且不具有与常规ItemView相关的方法。

我尝试过的事情:


仅将开始视图放在CollectionView的el前面是不希望的,因为我的CollectionView的方法作用于其子视图。
在木偶文件中,建议针对这种情况重写buildItemView(我认为?)。我不确定如何覆盖它。仅调用buildItemView不起作用,因为StartView没有关联的模型或任何选项。似乎我无法将这些arg排除在外,或者它只是返回undefined。
我无法在CollectionView的模板中包含StartView的标记,因为...木偶CollectionViews无法具有模板。
从Marionette文档中看,这似乎不适合CompositeView的用例。但是也许我错了。


我可能错过了相当明显的东西。在此先感谢您的帮助。

编辑:格式化

最佳答案

创建两个不同的视图“ StartView”和“ NormalView”:

StartView = Marionette.ItemView.extend({
    template:"#start-template'
});
NormalView = Marionette.ItemView.extend({
    template:"#normal-template"
});


在您的集合视图中,重写getItemView并返回“ StartView”和“ NormalView”……如下所示:

MyCollectionView = Marionette.CollectionView.extend({
   getItemView:function(item){
       if(item.get("ImTheFirst")===true)
          return StartView;
        else
          return NormalView;
    }
});


在集合的第一项上,添加一个属性“ ImTheFirst”(例如)并将其设置为true。

关于backbone.js - Marionette CollectionView和一个唯一的ItemView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15723832/

10-12 06:29