Typescript将数据从一个类传递到另一个类的事件

时间:2017-01-29 20:11:06

标签: javascript typescript ionic-framework

我知道这是一个非常基本的问题,但在半小时的研究中仍未找到答案。

我有两节课。一个人持有我的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
    }
}
希望,有人可以帮助我。 :)

1 个答案:

答案 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!");