Проверьте, была ли загружена предварительная загрузка компонента. js - PullRequest
0 голосов
/ 07 апреля 2020

Я ищу способ в SAPUI5 / OpenUI5 определить, был ли загружен Component-preload.js или были загружены исходные контроллеры и представления.

Пока ...

  • Я пытался использовать пространство имен моего проекта путем доступа к глобальным JS объектам my.namespace.controller, my.namespace.Component и т. Д. c. и пытается найти различия, когда Component-preload.js загружен и не загружен.
  • Я попытался использовать $ .sap.getAllDeclaredModules () и посмотреть различия, когда загружен и не загружен.
  • Я попытался перехватить событие onload Component-preload.js из своего кода SAPUI5, но я не нашел надежного способа присоединить свой обработчик событий до загрузки.
  • Я попытался скомпилировать фиктивный контроллер в моем Component-preload.js, который на самом деле не используется в проекте. Но я не нашел способа создать какую-либо разницу между состоянием, когда Component-preload.js загружен и не загружен.

У меня явно заканчиваются идеи.

1 Ответ

0 голосов
/ 08 апреля 2020

Не уверен, что это оптимально, но я пришел к небольшому и простому решению:

Следующая функция пытается загрузить компонентную предварительную загрузку. js file

checkComponentPreloaded: function () {
    return new Promise((resolve, reject) => {
        try {
            sap.ui.require(["com/your/namespace/Component-preload"], (CP) => {
                resolve();
            });
        } catch (e) {
            reject();
        }
    });
}

Затем в другом месте (например, init вашего Компонента. js) вы можете обработать обещание и сделать что-то (возможно, установить какое-либо свойство в модели config / view):

this.checkComponentPreloaded()
    .then(() => { Log.error("Preloaded"); })
    .catch(() => { Log.error("Not preloaded"); });

Небольшой улов: Если предварительная загрузка компонента доступна, но пуста, она все равно сообщит вам, что предварительно загружена.

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