Files
ionic-framework/packages/angular/src/providers/events.ts
2017-12-22 14:53:35 -06:00

33 lines
919 B
TypeScript

import { Injectable } from '@angular/core';
import { ensureElementInBody, hydrateElement } from '../util/util';
let hydratedElement: HTMLIonEventsElement = null;
@Injectable()
export class Events {
publish(topic: string, event?: any): Promise<any> {
return getElement().then((element: HTMLIonEventsElement) => {
return element.publish(topic, event);
});
}
subscribe(topic: string, handler: (event?: any) => void) {
return getElement().then((element: HTMLIonEventsElement) => {
return element.subscribe(topic, handler);
});
}
}
function getElement(): Promise<HTMLIonEventsElement> {
if (hydratedElement) {
return Promise.resolve(hydratedElement);
}
const element = ensureElementInBody(ELEMENT_NAME);
return hydrateElement(element).then((element: HTMLIonEventsElement) => {
hydratedElement = element;
return element;
});
}
const ELEMENT_NAME = 'ion-events';