Laszloでのevent処理はおもいのほか難しい? (解決編)
Laszloでのevent処理はおもいのほか難しい?での問題が解決しました。
marker側でeventを処理するのに<handler>ではなく、<method event="eventName" reference="objectName">を利用します。これによって、referenceで参照するオブジェクトが発行するeventを処理することができます。どのeventを処理するかを指定するのがevent="eventName"です。
以下に、サンプルコードを載せておきます。
<method event="minThumbValueChanged" reference="hSlider">
_screening();
</method>
<method event="maxThumbValueChanged" reference="hSlider">
_screening()
</method>
<method event="minThumbValueChanged" reference="vSlider">
_screening();
</method>
<method event="maxThumbValueChanged" reference="vSlider">
_screening()
</method>
<method name="_screening">
<![CDATA[
var hmin = hSlider.sliderPane.minThumb.value;
var hmax = hSlider.sliderPane.maxThumb.value;
var vmin = vSlider.sliderPane.minThumb.value;
var vmax = vSlider.sliderPane.maxThumb.value;
if( hmin <= this._nPrice && this._nPrice <= hmax && vmin <= this._rating && this._rating <= vmax ) {
this.setVisible( true );
} else {
this.setVisible( false );
}
]]>
</method>
method名は重複しても、おこられませんでした。handerのほうが使い勝手がよさそうに記述されていたので、handlerを重点的に試していたため、ここまで、たどり着くのが大変でしたTT。
この問題が解決したことで、Item Mapにスクリーニング機能を追加することができました。