Ajax Paginator – paginator nezmení stranu

Aris
Člen | 48
+
0
-

Ahoj, mám problém so stránkovaním cez Nette Paginator pri použití Ajax-u. Stránkovanie je nastavené na tlačidlo „Zobraziť viac“. Pri prvej požiadavke sa výraz $paginator->page+1 v javscripte vykoná, v presenteri je $paginator->page rovný 2. Počas ďalších AJAX requestov sa v paginatore stránka nezmení a ostane visieť na 2. strane.

Vyzerá to tak že bude problém v tom, že paginator pri AJAX-e nezmení stránku, respektíve ju neprepíše v šablóne. Nejaký tip ako na to?
Ďakujem za rady. :)

<div class="row white-box ajax"  n:snippet="ajaxSearchResults" data-ajax-append="true">
        <div class="content-page"  data-id="{$paginator->page*$paginator->getItemsPerPage()}" data-page="{$paginator->page}">
        {foreach $articles as $article}
		......
		</div>
</div>
<div class="pagination col-md-12" n:snippet="ajaxPagination" >
      <div class="text-center">
           <button class="ajax get-more-btn btn btn-info" id="">Zobraziť viac</button>

       </div>
	.......
</div>
<script n:syntax="double">
    //get more content ajax
    $(document).on('click', '.get-more-btn', function(e){

                if ($(window).data('ajaxready') == false) return;
                if ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight) {
                    $(window).data('ajaxready', false);
                    $.nette.ajax({
                        cache: false,
                        beforeSend: function () {
                            $('.preloader').show();
                        },
                        complete: function () {
                            $('.preloader').hide();
                        },
                        off: ['loading'],
                        url: {{link default, $paginator->page+1}},
                        data: {'count_offset_default': $(".content-page").last().data('id')},
                        success: function () {
                            $(window).data('ajaxready', true);
                        }
                    });
                }

             });
</script>
public function __construct()
	{
		$this->paginator = new Paginator;
	}

	public function renderDefault($page=1)
	{
		bdump($page);
		$articlesCount = $this->articlesModel->countArticles();
    $this->paginator = new Paginator;
    $this->paginator->setItemCount($articlesCount); // celkový počet článků
    $this->paginator->setItemsPerPage(5); // počet položek na stránce
    $this->paginator->setPage($page); // číslo aktuální stránky

		$selected_articles = $this->articlesModel->selectArticles($this->paginator->getLength(), $this->paginator->getOffset());
		$this->template->articles = $selected_articles;
		$this->template->paginator = $this->paginator;
    $this->template->renderAjax = $this->render_ajax;
    bdump($_GET);

    if($this->isAjax() && ($_GET['count_offset_default'] < $this->paginator->getItemCount()))
    {
    	bdump('ajax prebehol');
	        $this->redrawControl('ajaxSearchResults');
	        $this->redrawControl('ajaxPagination');
    }
	}

Editoval Aris (10. 1. 2019 9:29)

Martk
Člen | 661
+
+1
-

To je tím, že link zůstane stejný. Nadefinuješ ho natvrdo a pak se nepřepíše.

<button class="ajax get-more-btn btn btn-info" data-page="{$paginator->page + 1}">Zobraziť viac</button>
$(document).on('click', '.get-more-btn', function(e){

                if ($(window).data('ajaxready') == false) return;
                if ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight) {
                    $(window).data('ajaxready', false);
                    $.nette.ajax({
                        cache: false,
                        beforeSend: function () {
                            $('.preloader').show();
                        },
                        complete: function () {
                            $('.preloader').hide();
                        },
                        off: ['loading'],
                        url: {{link default}},
                        data: {
                            'count_offset_default': $(".content-page").last().data('id'),
                            page: $(this).data('page')
                        },
                        success: function () {
                            $(window).data('ajaxready', true);
                        }
                    });
                }

             });
Aris
Člen | 48
+
0
-

Myslel som, že ak som pridal script v snippete premenná sa automaticky prekreslí. Linky teda prispôsobovať cez data atribúty a javascript, ďakujem za nový poznatok :).