webOSアプリではMojo.Widget.Slider
、整数を0、1、または2に設定するために使用するものがあります。スライダーの値はすでに自分で丸めています(これを行う機能はありますが、使用をやめました)それが私の問題の原因でしたが、そうではありませんでした)が、ユーザーがスライドを完了した後、スライダーを丸められた整数の位置にスナップさせたいと思います。私が知る限り、これを行うために組み込まれているものは何もないので、自分で行う必要があります。次のようなことがうまくいくと思いました。
私のシーンアシスタントのセットアップ機能では:
this.mySliderModel = {value: 1};
this.controller.setupWidget('mySlider', {minValue: 0, maxValue: 2}, this.mySliderModel
そして、スライダーの変更をリッスンするには:
this.mySliderChangedEventListener = this.mySliderChanged.bindAsEventListener(this);
Mojo.Event.listen(this.controller.get("mySlider"), Mojo.Event.propertyChange, this.mySliderChangedEventListener);
そしてリスナー:
MainAssistant.prototype.mySliderChanged = function(event) {
var sliderValue = Math.round(event.value);
switch (sliderValue) {
case 0:
case 1:
case 2:
//it's a good value
//do some stuff
this.mySliderModel.value = sliderValue;
this.controller.modelChanged(this.mySliderModel);
break;
default:
Mojo.Log.info("mySlider error value: ", event.value);
break;
}
};
しかし、モデルを変更して呼び出すことmodelChanged
は何もしないようですが、ドキュメントとサンプルコードはこれが機能することを示しています。コードが機能しない理由と、目的の効果を達成するために何ができるかについてのアイデアはありますか?
注:さまざまなウィジェットを使用してこの種のことを実現できることは承知していますが、スライダーを使用して実現したいと思います。これを機能させる方法が見つからない場合は、他のものを使用することが私のバックアップです。