2013-07-25 4 views
1

Я работаю на бесконечном PAGINATION (http://addyosmani.github.io/backbone.paginator/examples/infinite-paging/index.html)Backbone.Marionette и Backbone.Paginator. CompositeView отрисовки

Я использую CompositeView для просмотра постраничной.

И у меня есть следующая проблема. Каждый раз, когда я получаю новые порции данных, коллекция Paginator удаляет старые данные и добавляет новые, поэтому CompositeView позволяет повторно получать и удалять старые результаты.

Как я могу решить эту проблему? Я думаю об отключении функциональности rerender, но как это должно быть сделано правильно?

Спасибо заранее!

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); 
    } 
}); 

Вот базовый код. this.collection.requestNextPage() - отправляет запрос данных на сервер. После получения данных this.collection удаляет старые модели и добавляет новые модели.

Композитный вид прослушивает эти события и удаляет itemView для старых моделей и добавляет элементы itemView для новых моделей.

И мне нужно, чтобы CompositeView не удалял старые элементы itemView.

+0

Пожалуйста, добавьте часть вашего кода – nstCactus

+0

Временное решение:. CollectionView $ (. "# chronoFeed-контент") добавить (itemView $ el.clone (правда.)); Поэтому я добавляю клоны itemViews к основному виду. – Roman

ответ

0

Я не совсем уверен, как работает этот paginator, поскольку я никогда не использовал его. Но я думаю, что самый простой способ исправить это - убедиться, что ваша коллекция не удаляет старые модели. Я предполагаю, что когда ваши данные возвращаются, он делает 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

 Смежные вопросы

  • Нет связанных вопросов^_^