カスタムイベントをドキュメントの本文に添付することは可能ですか?私は単純なメッセージバスを実装したい。私はjQueryを何度もやっていましたが、ExtJSでどうやってそれを行うかはわかりません。本文にカスタムイベントを追加する
ありがとうございます。
カスタムイベントをドキュメントの本文に添付することは可能ですか?私は単純なメッセージバスを実装したい。私はjQueryを何度もやっていましたが、ExtJSでどうやってそれを行うかはわかりません。本文にカスタムイベントを追加する
ありがとうございます。
イベントをボディや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');
ドキュメント自体に置くことは、カスタムイベントを発生させる点で問題があります。それは完了することができます - あなたは結果をの表現としてExt.util.Observable
を拡張したクラスを作成する必要があります。
しかし、既にオブザーバブルに追加してイベントをバブルアップすることができます。enableBubble : ['foo', 'bar']
。つまり、Observableの子どもにはfireEvent('foo')
を行い、聴き手がいる場所の上部に泡立ちます。
しかし、この場合、私のアプリの各コンポーネントにメッセージバスを注入する必要があります。ドキュメントの本文からカスタムイベントを起動すると、リスナーをどこにでも簡単に追加できます。それは、結合されていないコンポーネントについてです。 –
メッセージバスをシングルトンにすると、document.body上で何かを実行するのとまったく同じ量のコードになりますが、メッセージバスが他の便利な動作で拡張されるという利点があります。私はドキュメントに物をつけるよりも、このアプローチを強く勧めます。 –