2011-01-15 8 views
2

カスタムイベントをドキュメントの本文に添付することは可能ですか?私は単純なメッセージバスを実装したい。私はjQueryを何度もやっていましたが、ExtJSでどうやってそれを行うかはわかりません。本文にカスタムイベントを追加する

ありがとうございます。

答えて

3

イベントをボディやDOM要素にアタッチする必要はありません。むしろ専用のオブジェクトにアタッチします。

同様:

MyApp.MessageBus = Ext.extend(Ext.util.Observable, { 

    // I don't think it's necessary to declare all events 
    events : { 
    sayHello : true 
    } 


}); 

MsgBus = new MyApp.MessageBus(); 

そして、どこかにあなたのコードで:

MsgBus.on('sayHello', function(who) { alert("Hello, " + who); }); 

そして、別の場所に:

MsgBus.fireEvent('sayHello', 'innerJL'); 
+0

しかし、この場合、私のアプリの各コンポーネントにメッセージバスを注入する必要があります。ドキュメントの本文からカスタムイベントを起動すると、リスナーをどこにでも簡単に追加できます。それは、結合されていないコンポーネントについてです。 –

+2

メッセージバスをシングルトンにすると、document.body上で何かを実行するのとまったく同じ量のコードになりますが、メッセージバスが他の便利な動作で拡張されるという利点があります。私はドキュメントに物をつけるよりも、このアプローチを強く勧めます。 –

1

私はDrasillに同意し、多くの例がありますObservableに基づいたシンプルなバス実装を作成するためのExtコミュニティ。まず、herehereを参照してください。

1

ドキュメント自体に置くことは、カスタムイベントを発生させる点で問題があります。それは完了することができます - あなたは結果をの表現としてExt.util.Observableを拡張したクラスを作成する必要があります。

しかし、既にオブザーバブルに追加してイベントをバブルアップすることができます。enableBubble : ['foo', 'bar']。つまり、Observableの子どもにはfireEvent('foo')を行い、聴き手がいる場所の上部に泡立ちます。

関連する問題