<\/HEAD>
場合によっては、あるウィジェットから別のウィジェットの情報にアクセスする必要があります。その際に、あるウィジェットのデータを別のウィジェットで利用可能にする方法が問題となります。
<\/P>
この用途のために、ウィジェットは publishData()、fetchData()、fetchDataByName()、onReceiveData()、および onNoData() の機能を備えています。これらの機能は独自のウィジェットが BaseWidget から自動的に継承します。<\/P>
これらの機能の使い方をよりよく理解するために、2つのウィジェットを使った非常にシンプルな例を見てみましょう。
最初のウィジェット SetLocation は、地図を中心に配置できる X/Y 座標を入力するためのものです:<\/P>
<\/P>
2番目のウィジェット GetLocation は、この X/Y 座標を単純に表示します:<\/P>
<\/P>
では、この座標値はどのようにして2番目のウィジェットに渡されるのでしょうか?<\/P>
データを送信するウィジェット、つまり SetLocation では、座標値が2つの入力フィールドに入力され、ボタンをクリックしたときに呼び出される関数内で読み取られます。複数の個別データがある場合は、それらを JSON 文字列などにまとめることができます。これらのデータを他のウィジェットで利用可能にするために、publishData() 関数が呼び出され、そのデータが渡されます:<\/P>
<\/P>
データを受信するウィジェット、つまり GetLocation では、fetchData(widgetId) 関数でデータを取得します。
この関数は例えば startUp() メソッド内で呼び出すことができます:<\/P>
<\/P>
パラメーター widgetId は、データを送信するウィジェット(ここでは SetLocation)の ID であり、アプリの設定ファイル config.json に記載されたものです。<\/P>
受信可能なデータがある場合、それらは受信側ウィジェットで用意しなければならないイベントハンドラー関数 onReceiveData() に渡されます。データがない場合はイベントハンドラー関数 onNoData() が呼び出されます。<\/P>
<\/P>
onReceiveData() 関数では、渡されたデータがパラメーターとして受け取られるため、ここで使用できます。例えばウィジェット内で表示するなどです。
<\/P>
まとめると以下の流れになります:<\/P>
1) 送信側ウィジェットで publishData() 関数を使ってデータを提供する。<\/P>
2) 受信側ウィジェットで fetchData() 関数を使ってデータを取得し、onReceiveData() 関数内で読み取り使用する。<\/P>
Happy coding!
<\/BODY><\/HTML>