我想使用事件在Google关闭(GC)环境中的对象之间进行通信。使用Google关闭创建事件
假设我有两个类foobar.Boss
和foobar.Employee
。老板想知道员工何时煮咖啡,以及该咖啡是否是无咖啡因的(他本周正在放弃咖啡因)。
GC已经提供了可用类,似乎提供了这样做的手段,goog.events.Event
和goog.events.EventTarget
。
不知道更好,我认为它会像这样工作:
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);
...
}
这是一个正确的模式?我很困惑goog.events.EventTarget
- 目标如何派遣事件?目标没有发生吗?
This question很有帮助,但更直接的答案将不胜感激。
http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/fx/fx.js?r=2 #582是一个示例实现 - 从goog.events.EventTarget继承似乎很奇怪(Employee是否完全需要扩展EventTarget?) – 2012-01-31 23:40:13