yiiliveext писал(а): ↑2020.01.17, 11:59
Нельзя, если удаляете инстанс, то все теряется.
Но можно так
Код: Выделить всё
function loadPage(url) {
$.get(url, function(data) {
$('.listview_products').html($('.listview_products', data).html());
$('.listview_products').infinitescroll('bind');
$('.listview_products').infinitescroll({
state: {
isDestroyed: false,
isDone: false,
currPage: 1,
},
maxPage: $('.products', data).data('max_page'),
}, function() {});
});
}
Проверил, не корректно. Берет ссылку
#listview-products ul.pagination li.next a:first с предыдущего и просто прокручиваясь показывает например 2 страницы и вторая страница загрузилась не правильная.
Лучше оставить как есть сейчас
Ошибся кстати, не из ListView настройки берутся если дестрой делать, а из корневого виджета. Да и указывать нужно ссылку на следующую страницу правильную.
В моем случае корректно отрабатывает следующий вариант (мало ли кому пригодится в похожей ситуации). Добавлены переводы.
Код: Выделить всё
function loadPage(url) {
$.get(url, function(data) {
$('.listview_products').html($('.listview_products', data).html());
$('.listview_products').infinitescroll('destroy');
$('.listview_products').data('infinitescroll', null);
$('.listview_products').infinitescroll({
'contentSelector': '.listview_products',
'loading': {
'msgText': '<em>".\Yii::t('main', 'Loading products')."</em>',
'finishedMsg': '<em>".\Yii::t('main', 'No more products')."</em>',
},
'maxPage': $('.products', data).data('max_page'),
'itemSelector': '.listview_products >',
'navSelector': '#listview-products ul.pagination',
'nextSelector': '#listview-products ul.pagination li.next a:first'
},function () {});
});
}
Вот что по итогу в представлении с ListView (опять же для людей, кому пригодится)
Код: Выделить всё
<?php
use yii\widgets\ListView;
use nirvana\infinitescroll\InfiniteScrollPager;
$dataProvider->prepare();
?>
<div class="products" data-max_page="<?=$dataProvider->getPagination()->getPageCount()?>"></div>
<?= ListView::widget([
'id' => 'listview-products',
'options' => ['class' => 'listview_products'],
'itemOptions' => ['class' => 'item'],
'dataProvider' => $dataProvider,
'pager' => [
'class' => InfiniteScrollPager::className(),
'widgetId' => 'listview-products',
'itemsCssClass' => 'listview_products',
'linkOptions' => [
'class' => 'hidden',
],
'disabledPageCssClass' => 'disabled hidden',
'pluginOptions' => [
'contentSelector' => '.listview_products',
'loading' => [
'msgText' => '<em>'.\Yii::t('main', 'Loading products').'</em>',
'finishedMsg' => '<em>'.\Yii::t('main', 'No more products').'</em>',
],
],
],
'itemView' => $itemView,
'layout' => '<div class="row">{items}</div>{pager}',
])?>