Аурелия - агрегатор событий

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

У агрегатора событий Aurelia есть три метода. Вpublishбудет запускать события и может использоваться несколькими подписчиками. Для подписки на событие мы можем использоватьsubscribeметод. И наконец, мы можем использоватьdisposeспособ отсоединить подписчиков. Следующий пример демонстрирует это.

В нашем представлении будет всего три кнопки для каждой из трех функций.

app.html

<template>
   <button click.delegate = "publish()">PUBLISH</button><br/>
   <button click.delegate = "subscribe()">SUBSCRIBE</button><br/>
   <button click.delegate = "dispose()">DISPOSE</button>
</template>

Нам нужно импортировать eventAggregator и ввести его, прежде чем мы сможем его использовать.

app.js

import {inject} from 'aurelia-framework';
import {EventAggregator} from 'aurelia-event-aggregator';

@inject(EventAggregator)
export class App {
   constructor(eventAggregator) {
      this.eventAggregator = eventAggregator;
   }
   publish() {
      var payload = 'This is some data...';
      this.eventAggregator.publish('myEventName', payload);
   }
   subscribe() {
      this.subscriber = this.eventAggregator.subscribe('myEventName', payload => {
         console.log(payload);
      });
   }
   dispose() {
      this.subscriber.dispose();
      console.log('Disposed!!!');
   }
}

Нам нужно щелкнуть SUBSCRIBEкнопку, чтобы прослушать данные, которые будут опубликованы в будущем. После подключения подписчика при каждой отправке новых данных консоль будет регистрировать их. Если мы щелкнем поPUBLISH пять раз, мы увидим, что она каждый раз регистрируется.

Мы также можем отключить нашего подписчика, нажав кнопку DISPOSE кнопка.