2017-01-29 9 views
1

これはかなり基本的な質問ですが、まだ30分の調査で回答が見つかりませんでした。Typescriptあるクラスから別のクラスにデータを渡すイベント

私は2つのクラスを持っています。 1つは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

2つのクラス間でイベントのような動作をしたい場合は、Observerデザインパターンの軽量版を使用できます。 「扶養家族のリスト」を維持する代わりに、あなたの主体は従業員を1人だけ維持します。

オブザーバーパターンは、オブジェクト内のデザインパターンでは、対象と呼ばれる、オブザーバーと呼ばれ、その扶養家族のリストを保持し、通常は彼らの方法のいずれかを呼び出すことにより、任意の状態の変化を自動的に通知します。主に分散イベント処理システムの実装に使用されます。 (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!"); 
+0

ありがとうございました。 Ionicはビューを更新したくないので、私もエラーが発生しました。私は今それを修正しました。ご協力いただきありがとうございます –

関連する問題