Skip to content

Latest commit

 

History

History
124 lines (92 loc) · 3.67 KB

EventBus.md

File metadata and controls

124 lines (92 loc) · 3.67 KB

EventBus

⬅️ Назад

EventBus (шина событий) предназначена для простого взаимодействия базового функционала с остальными скриптами, не привязываясь при этом к верстке и вспомогательным объектам.

Работает по принципу Pub/Sub (Издатель/Подписчик) и построена на Deferred, что позволяет:

  • привязать к одному событию (Издателю) несколько обработчиков (Подписчиков)
  • обработчики событий сработают, даже если событие произошло раньше того, как мы к нему привязали обработчик.
  • не важен порядок объявления Издателя и Подпсичиков

Работа с шиной производится через объект EventBus.

Методы

🔨 subscribe

Подписаться на событие

📝 Параметры

В данных подписчика всегда доступен объект action, он содержит свойство method, а также дополнительные сведения, взависимости от события. 
В дополнительных свойствах объекта action могут быть:

  • Ссылка на jQuery объект DOM узла с которым произошло взаимодействие
  • Обновленные данные компонента (Cart, Products и т.д.)
  • Остальное смотреть через console.log или EventBus.logger
/**
 * @param {String} eventId название события
 * @param {function} callback функция обработчик события
 */
💻 Пример
EventBus.subscribe('event_id', function (data) {
  console.log(data)
});

EventBus.subscribe('add_items:insales:cart', function (data) {
  console.log('Товар добавлен');
});

🔨 publish

Публикация события

📝 Параметры
/**
 * @param {String} eventId название события
 * @param {Object} data любой тип данных, преимущественно `Object`
 */
💻 Пример
EventBus.publish('event_id', {
  isTest: true,
  title: 'Test',
  status: 'ok'
});

🔨 logger.add

Добавление логера для компонента

📝 Параметры

Список компонентов:

  • cart
  • product
  • search
  • compares
/**
 * @param {String} componentTitle название компонента
 */
EventBus.logger.add('cart')
💻 Пример
EventBus.logger.add('cart')
EventBus.logger.add('product')

⬅️ Назад