2014-01-23 29 views
1

我有一個CompositeView及其模板,ItemView及其模板。好吧!如何將兩個ItemView與Marionette包裝到同一個div中?

但現在我想換2 ItemView控件到同一個DIV,即

第一ItemView控件,以及第二ItemView控件到 第三ItemView控件,併爲其他ItemView控件第四...等

我知道我可以在ItemView控件的模板中使用的ItemIndex ..但我不知道用這個值的複合視圖模板

我:

Pagination.ItemView = Marionette.ItemView.extend({ 
    template: PaginationItemView, 
}); 

Pagination.ItemsListView = Backbone.Marionette.CompositeView.extend({ 

     itemViewContainer: 'span', 
     itemView: Pagination.ItemView, 

     itemViewOptions: function(model, index) { 
      return { 
      itemIndex: index 
      } 
     } 
    }); 

我ItemView控件的模板是:

<script> 
    <div style="margin-bottom:25px;height: 47%;" class="col-lg-6 col-xs-12 clearfix"> 
     <div class="col-xs-3"> 
      <!-- photo > 
     </div> 
     <div class="col-xs-9 box-basic"> 
      <!-- info about item> 
      </div> 
    </div> 
</script> 

我想要的東西,如:

<div class="row"> 
    <tagName of itemView> 
     first ItemView 
     <end tagName of ItemView> 

     <tagName of itemView> 
      seconde ItemView 
     <end tagName of ItemView> 
</div> 

<div class="row"> 
     <tagName of itemView> 
      third ItemView 
     <end tagName of ItemView> 

     <tagName of itemView> 
      fourth ItemView 
     <end tagName of ItemView> 
</div> 

任何想法?提前致謝!

編輯:

我有一個解決方案,但它真的不是正確的。

在compositeTemplate.html

<script> 
<span> 
    <div class="row" id="cont1"> 
    </div> 
    <div class="row" id="cont2"> 
    </div> 
    <div class="row" id="cont3"> 
    </div> 
</span> 
</script> 

而在CompositeView.js

appendHtml: function(collectionView, itemView, index){ 
      var childrenContainer = collectionView.itemViewContainer ? collectionView.$(collectionView.itemViewContainer) : collectionView.$el; 
      var children = childrenContainer.children(); 

      $("#cont"+(index%3+1)).append(itemView.el); 
     }, 

有人的模板知道這樣做的正確方法?

回答

0

在您的CompositeView中,您可以嘗試重寫getItemView方法。在我的示例下面,我的CompositeView根據即將呈現的模型選擇Image Gallery縮略圖或Article Thumbnail。

這是CoffeeScript中

getItemView: (item) -> 
    switch item.get('type') 
    when "ImageGallery" 
     App.Views.ImageGalleries.Index.Thumbnail 
    else 
     App.Views.Articles.Index.Thumbnail 
0

我會研究創建臨時集合並將對象分區到其中。請參閱:https://stackoverflow.com/a/11345570/402347瞭解使用下劃線的簡單分區方法。一旦你這樣做,你可以輕鬆地循環你的模板中的雙重條目。

您可能必須重寫視圖中的serializeData()方法才能將分區集合傳遞到模板。

+0

我不明白這個解決方案。它如何在木偶工作?我有一個compositeView和一個ItemView ..我怎樣才能發送兩個項目到itemView ..?使用ItemView中的方法SerializeData只有我有一個項目...我認爲我可以使用方法appendHtml,但我找不到解決此問題的方法 – Chrysweel