Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Андрей Данилин - SAP UI5 EventBus: еще один спо...

Андрей Данилин - SAP UI5 EventBus: еще один способ передачи данных между компонентами

Простой и удобный инструмент для постоения взаимодействия между компонентами SAP UI5

Avatar for Ilya Kaznacheev

Ilya Kaznacheev

November 22, 2018
Tweet

More Decks by Ilya Kaznacheev

Other Decks in Technology

Transcript

  1. sap.ui.core.EventBus • Publish–subscribe pattern; • Основные методы – publish, subscribe,

    subscribeOnce, unsubscribe; • Идентификатор: ChannelId, EventId; • Любое количество слушателей, можно слушать несуществующие события.
  2. • sap.ui.getCore().getEventBus() • Не рекомендуется использовать в случае работы внутри

    SAP Fiori Launchpad • FLP – component’s очищаются каждый раз при переходе на Launchpad • getOwnerComponent().getEventBus() • Каждый компонент имеет свою инстанцию EventBus • Подходит для связи controllers в рамках компонента Global or component based Notes: перед использованием метода getEventBus, следует убедится что объект sap.ui.core.EventBus объявлен в зависимостях:
  3. • Переисползование методов controllers; • Передача данных/состояния между несвязанными страницами;

    • Организация «защищённой» работы c данными; • Передача данных/состояния во вложенные компоненты; Use cases
  4. • Component interface, events • требует отслеживание объекта на всех

    controllers; • для реализации изменений в реальном времени требуется дополнительная обработка; Sharing data between components Child component: Parent component (controller):
  5. • propagateModel • доступны только в onAfterRendering для UIComponent •

    возможно нежелательное изменением данных модели, сложно это отследить Sharing data between components
  6. • EventBus в случае stand alone application • используется глобальный

    EventBus: sap.ui.getCore().getEventBus() • EventBus в случае приложения в FLP • SAP не рекомендует использовать глобальный EventBus – критично: отписываться от событий! • В дочерних компонентах можно получить доступ к родительскому EventBus через: sap.ui.core.Component.getOwnerComponentFor().getEventBus(); Sharing data between components
  7. Summary • EventBus позволяет легко связать несвязанные объекты в рамках

    component или application; • Хорошее решение при условии проектирования системы с использованием паттерна проектирования publish–subscribe; • Позволяет защитить данные от перезаписи при использовании кросс controller или component; • Не требует дополнительно описывать интерфейсы и полностью изолирует источники событий от слушателей;