Я пытаюсь использовать Django Endless Pagination с Масонство.

Проблема, с которой я продолжаю сталкиваться, состоит в том, что масонство прекрасно работает для первой страницы, но когда новые данные заполняются на странице, кладка не применяется к новым загруженным элементам. Я изучил добавление элементов, но не думаю, что это поможет мне в этом случае.

Так это способ реинициализации кладки после загрузки новых элементов?

Мне просто интересно, есть ли у кого-то еще подобная проблема, и есть ли у кого-то решение для этого?

2
Jonathan 3 Фев 2013 в 10:49

3 ответа

Лучший ответ

Если у кого-то есть похожая проблема, я наконец-то нашел решение. В итоге я использовал .masonry('reload'). После endless_on_scroll проще снова вызвать функцию перезагрузки. это решает проблему!

4
Jonathan 3 Фев 2013 в 11:22

В решении выше я обнаружил некоторую проблему. Когда я прокручиваю до конца страницы, я вижу некоторые артефакты (элементы накладываются друг на друга или в нижний колонтитул).

Я думаю, это потому, что мы вызываем masonry.reloadItems () до загрузки изображений или чего-то еще, и у предметов еще нет своего реального размера.

Эти решения могут решить эту проблему:

 <script type="application/javascript">
    $.endlessPaginate({
      paginateOnScroll: true,
      paginateOnScrollMargin: 3840,
      onCompleted: function(context, fragment) {
        $(document).ready(function () {
            var gallery = $('.gallery');
            gallery.imagesLoaded(function () {
                var masonry = gallery.data('masonry');
                if (masonry !== undefined) {
                    masonry.reloadItems();
                    masonry.layout();
                }
            });
        });
      }
    });
  </script>
0
dEll 3 Ноя 2017 в 10:33

Django-Endless-Pagination имеет обратный вызов onCompleted в своих настройках. Там сделайте следующее:

var masonry = $(myMasonryObject).data('masonry');
if (masonry !== undefined) {
    masonry.reloadItems();
    masonry.layout();
}
1
Salvatore Iovene 6 Окт 2013 в 17:57