Предварительная загрузка sap.ui.unified.Calendar

Я тестирую производительность своего приложения UI5 на медленном соединении 3G. Я заметил, что требуется довольно много времени, чтобы загрузить sap.ui.unified.Calendar впервые при использовании sap.m.DateTimePicker,

Это упоминается в официальной документации. Предлагаемое решение заключается в предварительной загрузке sap.ui.unified библиотека. Я пробовал несколько способов сделать это, но независимо от того, что я делаю, Calendar все еще занимает много времени, чтобы загрузить в первый раз.

  • Я пробовал добавлять sap.ui.unified в data-sap-ui-libs в моем index.html,
  • Я пытался использовать jQuery.sap.require("sap.ui.unified") (что, видимо, устарело).
  • Я пытался использовать sap.ui.require(["sap/ui/unified/Calendar"]),

Ни одно из этих решений не работает. Любая помощь будет оценена.


ОБНОВИТЬ

DateTimePicker объявляется следующим образом в представлении XML:

<DateTimePicker
    id="dtClockIn"
    valueFormat="MM-dd-YYYY hh:mm a"
    displayFormat="MM-dd-YYYY hh:mm a"
    placeholder="MM-DD-YYYY hh:mm ampm"/>

В контроллере ничего необычного не происходит.

1 ответ

Решение

В настоящее время комплекты библиотечных ресурсов (messagebundle*.properties файлы) загружаются по требованию и синхронно, что создает узкое место перед использованием соответствующего элемента управления (например, Календарь). Боюсь, мы ничего не можем с этим поделать.

Однако вы можете, по крайней мере, предварительно извлечь файл пакета, вызвав getLibraryResourceBundle вручную, когда пользовательский интерфейс готов. Например, на afterShow:

onAfterShow: function() {
  sap.ui.getCore().getLibraryResourceBundle("sap.ui.unified");
  // Avoids fetching it later when the Calendar is about to be shown
},

Начиная с версии 1.52, такие пакеты загружаются заранее асинхронно, если у конфигурации начальной загрузки есть атрибут preload со значением "async": https://output.jsbin.com/qolesuf

Другие вопросы по тегам