2013-07-25 61 views
1

我在無限分頁 (http://addyosmani.github.io/backbone.paginator/examples/infinite-paging/index.html)工作Backbone.Marionette和Backbone.Paginator。 CompositeView中重新描繪

我使用CompositeView中的分頁視圖。

而我有以下問題。每當我得到新的數據部分後,Paginator的集合會刪除舊數據並添加新數據,因此它使得CompositeView能夠重新渲染並清除舊結果。

我該如何解決這個問題?我在考慮禁用重新提交功能,但是應該如何正確完成?

在此先感謝!

var BaseFeedChronoCompositeView = Backbone.Marionette.CompositeView.extend({ 
    tagName: "div", 
    template: _.template(ChronoFeedComposite_html), 
    itemView: Article,     
    events: { 
     'click #loadmore-button-manual': function (e) { 
      e.preventDefault(); 
      this.collection.requestNextPage(); 
    }, 

    appendHtml: function (collectionView, itemView, index) { 
     collectionView.$("#chronoFeed-content").append(itemView.$el); 
    } 
}); 

這裏是基本代碼。 012.this.collection.requestNextPage() - 向服務器發送數據請求。獲取數據後,this.collection刪除舊模型並添加新模型。

複合視圖正在偵聽這些事件並刪除舊模型的itemView併爲新模型添加itemView。

我需要CompositeView不要刪除舊的itemViews。

+0

請添加一些代碼的 – nstCactus

+0

臨時的解決辦法是:的CollectionView $( 「#chronoFeed內容」)追加(ItemView控件$ el.clone(真));所以我將itemViews克隆添加到主視圖。 – Roman

回答

0

我不太清楚這個分頁器是如何工作的,因爲我從來沒有使用它。但我認爲解決這個問題的最簡單方法是確保您的收藏不刪除舊模型。我假設當您的數據被返回時,它正在對集合執行set。如果你看一下骨幹文檔,你可以看到你可以刪除模型http://backbonejs.org/#Collection-set

禁用此方法如果您想自定義的行爲,你可以用 選項禁用它:{補充:假}, {remove:false}或{merge:false}。

所以,當你正在更新的集合,而不是隻調用

myCollection.set([o1,o2,o3]); 

你應該做

myCollection.set([o1,o2,o3], {remove:false}); 
+0

this.collection.requestNextPage({remove:false})訣竅。謝謝! – Roman

相關問題