Laszloでのevent処理はおもいのほか難しい?
Amazonの商品を検索して、商品をグラフ上で比較するというアプリケーションをつくっています。
いま、グラフ上に示した商品を、横軸の値(価格)と縦軸の値(評価)でスクリーニングする機能を追加しようとしています。
sliderの最大・最小の値が変わったというeventを発生させて、marker(赤い点)側で、そのイベントを受け取って処理しようと考えました。
(slider側)
<event name="minThumbValueChanged"/>
<method name="sendMinThumbValueChanged">
minThumbValueChanged.sendEvent();
</method>
(marker側)
<handler name="maxThumbValueChanged" reference="hSlider">
_screeningPrice();
</handler>
<method name="_screeningPrice">
<![CDATA[
var min = hSlider.sliderPane.minThumb.value;
var max = hSlider.sliderPane.maxThumb.value;
if( this._nPrice < min || max < this._nPrice ) {
this.setVisible( false );
} else {
this.setVisible( true );
}
]]>
</method>
注)
hSliderは横軸のslider
_nPriceは商品の価格
をあらわしています。
slider側でなぜか、sendEvent()なんてメソッドは定義されてないというエラーはでますが。
ここまでは、動きます。
次に、vslider側も同じようにとおもって、上のmarker側のコードで
<handler name="maxThumbValueChanged" reference="hSlider">
↓
<handler name="maxThumbValueChanged" reference="vSlider">
とする。OUT!ですTT
class定義の中では、多重定義できないのか、はたまた、思い違いをしているのか・・・
たぶん後者ですが、謎はふかまるばかりりで、はまってます。
というわけで、いまのとこる横軸のみスクリーニングできます。
こちらでお試しください。
p.s.
はじめは、modeletorクラスなんてものをつくろうとおもっていたんですが、どう考えてもうまくいきそうにないので、今回の作戦にでました。結果はいまいちです。
どなたか、よいアイディアがありましたら、お教えください。