Реализовать отложенную загрузку с помощью службы XSJS

#sapui5 #hana

#sapui5 #hana

Вопрос:

У меня есть служба XSJS, которая возвращает обратно 3000 строк (как минимум) в пользовательский интерфейс. Мне нужно реализовать отложенную загрузку для того же. Каков наилучший способ реализовать то же самое. Данные являются пользовательскими и, следовательно, не могут быть обработаны службой XSOData. Я использую XS Classic для разработки служб XSJS.

Любые идеи были бы полезны.

Ответ №1:

Что ж, отложенная загрузка будет реализована на стороне клиента: отложите JSONModel.loadData() до тех пор, пока данные не понадобятся.

Но я предполагаю, что вам понадобится какая-то подкачка, чтобы загружать только части такого количества строк. Если вы не можете использовать XSOdata, вам придется реализовать подкачку самостоятельно. Обычно используются некоторые параметры запроса, которые определяют начальную строку и количество строк для извлечения. Часто бывает нетривиально эффективно реализовать подкачку в службе, если задействованы сортировка и фильтрация.

В пользовательском интерфейсе реализация в основном зависит от того, что вы хотите сделать. Вы могли бы просто загрузить все страницы в фоновом режиме с помощью JSONModel.loadData() bMerge = true . Таким образом, появляются быстрые первые строки, и список растет, пока пользователь может начать чтение. Или вы можете отобразить первые строки в списке и указать кнопку «еще», которая добавляет следующую страницу по требованию. Или вы можете использовать классические страницы, как в Google…