как работать с нумерацией страниц с помощью Backbone.Marionette

У меня есть коллекция, которая заполняется с помощью внешнего API, API возвращает ряд объектов + сведения о разбиении по страницам для дополнительных объектов, тогда я хотел бы показать, вероятно, только подмножество этих объектов в моих представлениях, но разрешить дальнейшее разбиение на страницы слишком

Чтобы объяснить мою ситуацию немного лучше:

  1. получить 20 результатов с сервера, получить данные разбиения на страницы для дальнейших страниц
  2. показать 10 результатов + еще кнопка
  3. нажав больше, показывает 10 результатов + кнопка «Дополнительно»
  4. щелчок дальше, получает 20 результатов с сервера, показывает 10 результатов + кнопка «Дополнительно» ...

каким будет ваше решение? Я нашел Backbone.Paginator, но не знаю, насколько хорошо он интегрируется с Marionette и существует ли уже является расширением Backbone.Marionette.Paginator :)


person Akasha    schedule 17.07.2012    source источник


Ответы (2)


Backbone.Paginator предоставляет расширения и дополнительные методы и функции поверх коллекций Backbone, что означает, что их можно использовать из любого типа представления Backbone, включая Marionette.

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

person Derick Bailey    schedule 17.07.2012

Вот как я решил проблему интеграции Marionette и backbone.paginator. В каком-то смысле это было «прямолинейно», но меня, новичка в backbone.marionette, это какое-то время раздражало! Я надеюсь, что это полезно для кого-то.

Используйте метод serializeData в композитном представлении для отображения информации из объекта paginator_ui модуля разбиения на страницы.

/* a view for presenting a backbone.paginator collection,
 * and for presenting and handling its pagination UI element */
App.module('Views', function(Views, App, Backbone, Marionette, $, _) {
    Views.PaginatedCollectionView = Backbone.Marionette.CompositeView.extend({
        template: 'backbone/templates/paginated_collection_view',
        itemView: App.Views.StructureView,

        /* I'm not using a model, but you could if you
         * wanted? You might even merge the two */
        serializeData: function(){
          if (this.model){
            data = this.model.toJSON();
          } else {
            // we want to render the paginator_ui in our templates
            data = this.collection.paginator_ui;
          }

          return data;
        }
    });
});
person Ziggy    schedule 07.10.2013