2014-09-02 309 views
0

我可以使用嵌套複合視圖來製作像這樣的輸出嗎?Marionette嵌套複合視圖

Nike 
    Football, Basketball 
Reebok 
    Football, Basketball, Running 

我沒有用這種方式編寫嵌套複合視圖。我不確定是否有其他更好的方法或最佳實踐方式來實現此目標。

結構:

BrandCompositeView 
    itemView: Layout1 
       #brand<-BrandView (Nike, Reebok) 
       #sport<-SportCompositView 
          itemView: SportView 


BrandCompositeView (generate Nike, Reebok), 
itemView of BrandCompositeView is a layout1 with div id are(#brand, #sport) 

SportCompositView (generate Football, Basketball, Running) 
itemView of SportCompositView is SportView 

BrandView and SportView are itemView 

Layout1 is Marionette.Layout 

內Layout1.js

initialize:function(){ 
    this.brandView = new BrandView({"model": this.model}); 
    this.sportView = new SportCompositView({"collection":collection}); 
} 

onRender: function() { 
    this.brand.show(this.brandView); 
    this.sport.show(this.sportView); 
} 
+0

所以你有一個品牌的集合,每個品牌都有體育活動的集合,你必須渲染它像一個嵌套列表? – Evgeniy 2014-09-02 06:24:37

+0

是的,這只是一個例子。我必須做類似的事情。它現在正在工作,但我不知道這是否正確的方式來做到這一點。 – Fingercross 2014-09-02 06:33:33

+1

結帳這篇文章 - 它非常接近你要找的東西http://stackoverflow.com/questions/25232982/backbone-fetch-related-models/25236715#25236715 – Evgeniy 2014-09-02 06:44:30

回答

0

是的,它是可能的。

方法我已經使用樹形結構 - (?收集超過1名兒童)article.

0

怎麼樣,如果我想使這個

Car: [ 
    { 
    Car1 
     name: car1 
     image: [{img1}, {img2}, {img3}] 
     comment: [{comment1}, {comment2}, {comment3}] 
     price: $1000 
    }, 
    { 
    Car2 
     name: car1 
     image: [{img1}, {img2}, {img3}] 
     comment: [{comment1}, {comment2}, {comment3}] 
     price: $2000 
    } 
] 


<script id="car-template" type="text/template"> 
    <li><%= name %></li> 
    <div id="photo-container"></div> 
    <li><%= price %></li> 
    <div id="comment-container"></div> 
</script> 
0

其實我只是寫了一個答案,這可能有助於你幾天前。看看這個線程 - Construct views for data nested several levels deep

基本上它已經使用骨幹關係來自動處理所有的嵌套。然後,您可以在複合視圖內抽象出合成視圖。