Ag-grid серверная infiniteScroll продолжает извлекать данные при прокрутке страницы - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь получить базовую c серверную таблицу данных infiniteScroll. Я установил cacheBlockSize = 20 и maxBlocksInCache = 1. Чтобы он каждый раз загружал с сервера 20 записей и сохранял в кэше только одну страницу данных. Эта настройка позволяет мне увидеть, как работает загрузка данных. Он загружает первую страницу правильно в самом начале. Но когда я прокручиваю до следующих 20 записей, он должен вызвать API и загрузить новые 20 записей, а затем отобразить их на странице. Но он продолжает вызывать API снова и снова.

Я установил параметр сетки следующим образом:

gridOptions: {
    headerHeight: 45,
    rowHeight: 30,
    rowModelType: 'serverSide',
    rowSelection: 'multiple',
    blockLoadDebounceMillis: 500,
    cacheBlockSize: 20,
    maxBlocksInCache: 1,
    pagination: false,
},

Источник данных находится здесь:

export class MyDatasource implements IServerSideDatasource {
  getRows(params: IServerSideGetRowsParams) {
    this.searchApi.getData().subscribe(
        resp => {
            let lastRow = -1;
            if (resp['totalRecords'] <= params.request.endRow) {
                lastRow = resp['totalRecords'];
            }
            params.successCallback(resp['data'], lastRow);
        },
        error => {
            params.failCallback();
            console.log(error);
        },
    );
  }
}

1 Ответ

1 голос
/ 26 февраля 2020

Проверьте документацию по кешированию: https://www.ag-grid.com/javascript-grid-server-side-model-infinite/#cache -конфигурация

Если вы читаете о свойстве maxBlocksInCache, оно говорит о том, что происходит, когда оно установлено слишком низким:

Если используется, убедитесь, что у вас достаточно блоков в кеше для отображения одного полного представления таблицы (ie, что находится внутри области прокрутки), иначе это не будет работать и бесконечно l oop из запрашивающих блоков произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...