Aurelia - agregador de eventos

O agregador de eventos deve ser usado quando seus eventos precisam ser anexados a mais ouvintes ou quando você precisa observar alguma funcionalidade do seu aplicativo e aguardar a atualização dos dados.

O agregador de eventos Aurelia possui três métodos. opublishmétodo irá disparar eventos e pode ser usado por vários assinantes. Para se inscrever em um evento, podemos usar osubscribemétodo. E, finalmente, podemos usar odisposemétodo para desanexar os assinantes. O exemplo a seguir demonstra isso.

Nossa visualização terá apenas três botões para cada uma das três funcionalidades.

app.html

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

Precisamos importar eventAggregator e injetá-lo antes que possamos usá-lo.

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!!!');
   }
}

Precisamos clicar no SUBSCRIBEbotão para ouvir os dados que serão publicados no futuro. Assim que o assinante for conectado, sempre que novos dados forem enviados, o console os registrará. Se clicarmos noPUBLISH botão cinco vezes, veremos que é registrado todas as vezes.

Também podemos destacar nosso assinante clicando no DISPOSE botão.