JavaScript の Window オブジェクトからExtjs のインスタンスを取得する方法

現在、window.postMessage() を使って、ブラウザのタブ間で連携を行っています。
タブ間で連携するので、window.open() を使って、タブを新規作成するのですが、戻り値は タブのwindow オブジェクトです。

逆に、window.postmessage のイベントwindow.addEventListener("message", hoge); の hogeメソッドで受け取るevent 内に、呼び出し元windowオブジェクトが含まれています。(event.source)


という訳で、windowオブジェクトから、Extjsのインスタンスが取得できると、両方でのやり取りが簡単になります。

という訳でやり方:

window.Ext.ComponentQuery.query('hogehoge');
tab.Ext.ComponentQuery.query('hogehoge');

event.source.Ext.ComponentQuery.query('hogehoge');
も可能

この処理で、Extjsのインスタンスが取得できます。
もちろんこれは配列で帰ってくるので、[0] などの配列インスタンスを取得して下さい。


ただ、やりすぎるとどこから動いているか分からなくなるので、独自ルールを作っています。

window.Ext.ComponentQuery.query('viewport')[0].fireEvent('XXXXXX');

こうする事で、必ず viewport でイベントを発生させることが出来ます。
イベントなのでコントローラーで受け取れ、処理も出来ます。

外部からは、必ずViewportのイベントにすることにより、処理の流れが多少見やすくなります。
(私はViewport用のコントローラーはほとんど何も書いて無いから特に分かりやすい)

何かの参考になれば…と思います。
(私は忘れないために…)


検索用:Extjs4 window オブジェクトから Ext 呼出し インスタンス 取得 タブ データの受け渡し

コメント

このブログの人気の投稿

ヨドバシカメラの店舗購入履歴を見るには…

C# の WPF の DataGrid で 行を交互に背景色を変える+選択色を変える+カラムが無い所も変える…

Visual Studio の ホットリロードが動かない場合に確認するところ