-
Notifications
You must be signed in to change notification settings - Fork 12
Open
Description
Привет. Возникла проблемка. Если на странице 3 ListView, то скролпейджер работает только для последнего. Там у каждого есть кнопка для подгрузки товаров.
Вот код для вьюшек
echo \yii\widgets\ListView::widget([
'dataProvider' => $dataProvider,
'itemView' => function($model) use (&$helper){
$helper->recalc($model, ['except' => ['DocumentSum']]);
return $this->render('../_shop_item', [
'model' => $model,
'btnClass' => 'mini-button',
'innerSub' => false
]);
},
'options' => [
'class' => 'list-view '. $dataProvider->pagination->params['type']
],
'itemOptions' => [
'class' => 'hovered'
],
'layout' => Html::tag('div', '{items}'.
Html::tag('div',
Html::tag('span', \Yii::t('shop', 'Еще товары')),
[
'class' => 'ias-trigger'
]
),
[
'class' => 'items-grid clear-fix',
]
).
'{pager}',
'pager' => [
'class' => InfiniteScrollPager::className(),
'options' => [
'class' => 'pagination hidden'
],
'paginationSelector' => '.list-view.' . $dataProvider->pagination->params['type'] . ' .pagination',
'itemSelector' => '.hovered',
'autoStart' => false,
'containerSelector' => '.list-view.' . $dataProvider->pagination->params['type'] . ' .items-grid',
'nextSelector' => '.list-view.' . $dataProvider->pagination->params['type'] . ' .pagination .next a:first',
'pluginOptions' => [
'loadingText' => '',
],
],
'summary' => false
]);
Дальше по кнопке я осуществляю подгрузку товаров следующим кодом
$('body').on(hasTouch ? 'touchend' : 'click', '.ias-trigger', function(e){
if(hasTouch && isTouchMoved(e)){ return false; }
e.preventDefault();
$(this).parents('.items-grid').infinitescroll('start').infinitescroll('retrieve');
});
$('body').on('.items-grid infinitescroll:afterRetrieve', function(){
$('.list-view').infinitescroll('stop');
});
Для одного ListView работает шикарнейше, без запинки. А вот для большего количества не хочет. Проблема в том, что после последней инициализации пейджера в яваскрипте
init: function (params) {
options = $.extend(true, {}, defaults, params);
var data = $(this).data(name);
if (data) {
return this;
} else {
object = this;
if (!options.state.isPaused) {
methods.start();
}
return this;
}
},
Объект и опции остаются для последнего пейджера, потому, какую бы кнопку я не нажал -- срабатывает подгрузка товаров для последнего блока =(
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels