Я использую ExtJS 6.2, MemoryStore с пейджингом и пытаюсь получить данные из удаленного источника. Причина, по которой я использую MemoryStore, заключается в том, что я использую WebSocket для получения данных из удаленного источника. Допустим, у меня есть 1000 записей для отображения, и я хочу визуализировать 10 элементов на странице. Все работает, когда я хочу визуализировать первую страницу с помощью этого обратного вызова из WebSocket:
function (message) {
received_data = JSON.parse(message.data);
me.store.getProxy().setData(received_data.data);
me.store.loadPage(received_data.data.page);
Чтобы заставить его работать, мне пришлось установить данные в прокси, а не напрямую загружать их в хранилище. Когда received_data.data.page
равно 1, все в порядке. received_data.data
содержит JSON, который выглядит так:
{limit: 10, page: 1, start: 0, total: 1000, items: Array(10)}
Проблемы возникают, когда я переключаюсь на страницу 2. Теперь received_data.data
:
{limit: 20, page: 2, start: 10, total: 1000, items: Array(10)}
Но сетка ничего не показывает. На панели инструментов подкачки отображается сообщение «Нет данных для отображения», и магазин выглядит странно. Я имею в виду, что у него нет данных. store.getData()
и store.getCount()
не возвращают элементов и 0.
Обходной путь - получить с сервера все данные до последней, которую я хочу визуализировать, и показать последнюю страницу. В случае страницы 2 я могу получить с сервера JSON:
{limit: 20, page: 2, start: 10, total: 1000, items: Array(20)}
Это будет работать, как и ожидалось, но, конечно, это не жизнеспособное решение, поскольку я бы не стал использовать подкачку для простого извлечения небольшого фрагмента данных вместо всего набора данных.
Дело в том, что я подозреваю, что это связано с тем, как работает прокси. То есть он вычисляет фактические данные для помещения в хранилище, используя параметры page
, start
и limit
. Поскольку я недостаточно знаю о том, как это работает под капотом, мне трудно заставить его вести себя так, как я хочу. Итак, вопрос: как заставить прокси получить правильный набор данных с разбивкой по страницам в хранилище?