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

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

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

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

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; • Не требует дополнительно описывать интерфейсы и полностью изолирует источники событий от слушателей;