Me gustaría usar eventos para comunicarme entre mis objetos en un entorno de cierre de google (GC).Crear eventos con google closure
Supongamos que tengo dos clases foobar.Boss
y foobar.Employee
. El Jefe quiere saber cuándo el Empleado ha hecho café, y si ese café es descafeinado (está descartando la cafeína esta semana).
GC ha hecho las clases disponibles que parecen proporcionar los medios para hacer esto, goog.events.Event
y goog.events.EventTarget
.
Sin conocer mejor, pensaría que sería el siguiente:
foobar.Employee.prototype.makeCoffee = function(isDecaf)
{
this.coffeeMaker.putCoffeeInMachine(isDecaf);
this.coffeeMaker.start();
var event = new goog.event.Event('COFFEE_ON', { isDecaf: isDecaf });
goog.events.dispatchEvent(event);
}
foobar.Boss.prototype.addEmployee = function(employee)
{
...
goog.events.listen(employee, 'COFFEE_ON', function(e)
{
if (e.target.isDecaf)
{
this.refillMug();
}
}, false, this);
...
}
Es este un patrón correcto? Estoy confundido por la clase goog.events.EventTarget
- ¿cómo despacha un objetivo los eventos? ¿Un objetivo no le ha sucedido nada?
This question es útil, pero se agradecería una respuesta más directa.
http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/fx/fx.js?r=2 # 582 Es una implementación de ejemplo: heredar de goog.events.EventTarget parece extraño (¿es completamente necesario que Employee extienda EventTarget?) –