我知道这是一个非常基本的问题,但在半小时的研究中仍未找到答案。
我有两节课。一个人持有我的Google Maps API。单击标记时,我想在另一个类上发出事件并将数据传递给它。 我写了一些伪代码,所以你可以想象我想做什么。
export class Class1 {
someFunctionInClass1() {
//some code
this.functionHere()
}
functionHere() {
gotanEvent() {
google.maps.event {
//here i got an event
and want to pass data to Class2
functionToCallWhenEventEmits(with the data)
}
}
}
}
import { Class1 } from ../class1Path;
export class Class2 {
constructor(public class1: Class1) {
}
someFunctionInClass2() {
class1.someFunctionInClass1();
}
functionToCallWhenEventEmits(data to pass) {
//do something
}
}
希望,有人可以帮助我。 :)
答案 0 :(得分:1)
如果您希望在两个类之间使用类似事件的行为,则可以使用Observer设计模式的轻量级版本。而不是维护其家属的#34;列表,而是只保留一个受抚养人。
观察者模式是一种软件设计模式,其中一个称为主体的对象维护其依赖者列表,称为观察者,并通常通过调用其中一种方法自动通知它们任何状态变化。它主要用于实现分布式事件处理系统。 (Wikipedia)
以下是轻量级观察者模式(with a Fiddle)的示例。
class Subject
{
private observer : Observer;
public Attach(observer: Observer)
{
this.observer = observer;
}
public DoSomething(message: string)
{
if (this.observer != null)
{
observer.Updating(message);
}
}
}
class Observer
{
public Updating(message: string)
{
document.writeln(message);
}
}
var subject = new Subject();
var observer = new Observer();
subject.Attach(observer);
subject.DoSomething("Something happened!");