Весенняя акция
Скидки до 30% на тарифный план и подарки от Яндекса, MPSTATS и Деловой среды. Получить
Реклама
ООО Инсейлс Рус ИНН 7714843760 erid: 2RanykDZ3Ri, ООО "ЯНДЕКС" ИНН 7736207543 erid:2RanymHqCE4, ООО "Мпстатс" ИНН 7804680366 erid: 2RanymKKBWQ, АО Деловая Среда ИНН 7736641983 erid: 2Ranykw5hmA

EventBus

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

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

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

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

subscribe

В работе с API необходимо привязываться к подписчикам, так как издатели объявлены внутри API. Например, при добавлении товара в корзину внутри API публикуется событие add_items:insales:cart:

EventBus.publish('add_items:insales:cart', data);

Данные, которые переданы через EventBus.publish, доступны в подписчике.

EventBus.subscribe('add_items:insales:cart', function (data) {
  console.log('add_items:insales:cart:', data);
});

Параметры

В данных подписчика всегда доступен объект 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
  • favorites_products
  • quick_checkout
/**
 * @param {String} componentTitle название компонента
 */
EventBus.logger.add('cart')

Пример

EventBus.logger.add('cart')
EventBus.logger.add('product')

Оставить оценку

Оценка успешно отправлена.
Она будет проверена администратором перед публикацией.
Перед публикацией все оценки проходят модерацию

Оценки: 0

Остались вопросы?
Отправь тикет в техподдержку!
Еще нет своего магазина?
Создайте интернет-магазин на платформе inSales
Всё для продаж уже внутри!
Нажимая кнопку «Зарегистрироваться», я принимаю Пользовательское соглашение и Политику конфиденциальности
Недавно просмотренные статьи
Продолжая пользоваться сайтом,
вы соглашаетесь с использованием cookie