Matt Ellis
Matt Ellis

Reputation: 65

ImagesLoaded required for outlayer option

So I seem to get this error for some reason: [InfiniteScroll] imagesLoaded required for outlayer option

Even though I have declared imagesLoaded...here is my code:

        $('.item-list').imagesLoaded(function () {

            var $grid = $('.item-list');

            $grid.isotope({
                itemSelector: '.item-list__card',
                percentPosition: true,

                masonry: {
                    columnWidth: '.grid-sizer'
                }
            });

            var iso = $grid.data('isotope');

            $grid.infiniteScroll({
                    path: '.navigation a',
                    append: '.item-list__card',
                    debug: true,
                    status: '.infinite-scroll-request',
                    outlayer: iso
                }
            );
        });

I load my plugins with webpack and es6 at the top of the page:

import 'ImagesLoaded';
import Isotope from 'Isotope';
import InfiniteScroll from 'infinite-scroll';

No idea what's going on unfortunately, hope someone can help!

Upvotes: 3

Views: 987

Answers (2)

Jasson Rojas
Jasson Rojas

Reputation: 299

Infinite Scroll has an awesome tutorial in here Hope it helps !

Upvotes: 1

Matt Ellis
Matt Ellis

Reputation: 65

Ok looks like I didn't read all the docs for the Webpack installation... I had to assign infinite scroll to imagesloaded.

InfiniteScroll.imagesLoaded = imagesLoaded;

So my complete code is:

        InfiniteScroll.imagesLoaded = imagesLoaded;

        $('.item-list').imagesLoaded( function () {  

            var $grid = $('.item-list');

            $grid.isotope({
                itemSelector: '.item-list__card',
                layoutMode: 'masonry',
                masonry: {
                    columnWidth: '.grid-sizer',
                    horizontalOrder: true,
                    gutter: '.gutter-sizer',
                },
                percentPosition: true,
            });

            var iso = $grid.data('isotope');

            $grid.infiniteScroll({
                    path: '.navigation a',
                    append: '.item-list__card',
                    debug: true,
                    status: '.infinite-scroll-request',
                    outlayer: iso,
                    //safari work around
                    onInit: function () {
                        this.on('load', function () {
                            $grid.isotope('layout');
                        })
                    }
                }
            );

            // filter items on button click
            $('.filter').on('click', 'button', function () {
                var filterValue = $(this).attr('data-filter');
                $grid.isotope({filter: filterValue});
            });
        });

Upvotes: 2

Related Questions