2014-12-02 48 views
1

我遇到了Marionette collectionView的問題。當我不定義EL像Backbone.Marionette collectionview在el被定義時重置

var featureditems = new View.CarouselItems({ collection: content }); 

中的CollectionView:

View.CarouselItem = Marionette.ItemView.extend({  

    template: carouselItemTpl, 

    tagName: 'div', 

    attributes: function() { 
     var clas = ''; 
     if (this.model.get('ind') == 0) { 
     clas = ' active' 
     } 
     return { 
     'data-slide-to': this.model.get('ind'), 
     'data-target': '#homeCarousel', 
     'class': 'item' + clas 
     }; 
    }, 


}); 

View.CarouselItems = Marionette.CollectionView.extend({ 

    itemView: View.CarouselItem 
}); 

的呈現的CollectionView div標籤,這是有問題的包裹內的物品。

當我限定容器元件像這樣:

var featureditems = new View.CarouselItems({ collection: content, el: $("#carousel-inner") }); 

視圖呈現像itemViews,

<div class="carousel-inner"> 
    <div class="active item"> 
     <img alt="" class="slide-img" src="./assets/img/avant_floorstand.jpg"> 
     <div class="hero-unit">    
     </div> 
     <!--div class="hero-video"></div--> 
    </div> 
    <div class="item"> 
     <img alt="" class="slide-img" src="./assets/img/avant_wall.jpg"> 
     <div class="hero-unit">    
     </div> 
    </div> 
    <div class="item"> 
     <img alt="" class="slide-img" src="./assets/img/beovision11_day3jpg jpg.jpg"> 
     <div class="hero-unit">    
     </div> 
    </div> 
    </div> 

這是所期望的,但是,當整個集合呈現元件消失和我保持和空視圖像<div id="#carousel-inner"></div>

幫助!

PS:我用的引導輪播,使我的旋轉木馬

+0

嗯,你所期望的行爲,什麼努力達到? – Evgeniy 2014-12-02 08:47:22

+0

我希望元素在渲染後保留在dom中。目前他們itemView呈現然後消失。 – 2014-12-02 09:03:50

+0

@AlexMbaka何時會元素消失? – StateLess 2014-12-02 09:05:54

回答

0

如果您使用的木偶> = 2.0.0,itemView已取代childView。就目前而言,Marionette的CollectionView類似乎沒有原生itemView屬性。在the official docsthe source for the module中均未提及。

而且,你似乎有錯誤在你選擇的定義容器元素:$('#carousel-inner')正在尋找與IDcarousel-inner的元素,但在你生成的HTML,頂層div有,作爲一個類。

我覺得像傳入一個已經存在的元素可能會讓事情變得麻煩。動態製作自定義「el」可能會更好。我想嘗試移動標籤渲染成的CollectionView,像這樣:

View.CarouselItems = Marionette.CollectionView.extend({ 
    childView: View.CarouselItem, 
    tagName: 'div', 

    //Add your custom classes to the div tag as soon as it's rendered 
    onRender: function(){ 
    this.$el.addClass('carousel-inner'); 
    } 
}); 

然後調用的時候,我會打電話來是這樣的:

var featuredItems = new View.CarouselItems({collection: content}); 
featuredItems.render().$el.appendTo(/*The DOM Node you'd like to append this to */); 
相關問題