Как загрузить дочерний компонент в родительское приложение UI5, не определяя его в manifest.json?

Как загрузить дочерний компонент в родительское приложение UI5? Я пытаюсь реализовать панель запуска Fiori, которая может загружать другие приложения в качестве дочерних компонентов.

До сих пор я имел в виду https://stackoverflow.com/a/46358895/5846045

Но для реализации этого требуется, чтобы дочерние компоненты были явно определены в манифесте. Спасибо!


person fauxCoder    schedule 25.12.2020    source источник


Ответы (1)


Чтобы встроить один компонент в другой компонент, вам нужно использовать ComponentContainer — вы можете использовать его с URL и другими свойствами, если ваше приложение ничего не знает о дочернем элементе априори. Если, например, ваше родительское приложение получает информацию о дочернем элементе из службы данных во время выполнения.

https://sapui5.hana.ondemand.com/#/api/sap.ui.core.ComponentContainer

Вы можете использовать ComponentContainer так же, как и другие элементы управления. вы можете использовать его внутри XML-представлений или создать экземпляр внутри контроллера, а затем добавить его к содержимому страницы (просто пример)

PS: просто убедитесь, что URL-адрес дочернего компонента находится на том же хосте. Или, если он с другого хоста, его можно получить с помощью ajax-запросов (кросс-происхождение-политика и прочее).

Обновление 2021-01-04: вот быстрый и грязный пример в JS Fiddle:

https://jsfiddle.net/iPirat/t30sr8zw/

Я внедрил Button-Sample-Component из sapui5.hana.ondemand.com здесь. из-за политики CORS он будет работать, только если вы отключите веб-безопасность в своем браузере пример как это сделать в хроме

Вот как это выглядит

person iPirat    schedule 30.12.2020
comment
Согласны, что мы можем использовать его как обычные элементы управления, но они также должны быть явно определены в манифесте, верно? Я хочу избежать их определения, и именно в этом был мой вопрос. - person fauxCoder; 02.01.2021
comment
добавлен пример скрипки - person iPirat; 04.01.2021