编程语言
首页 > 编程语言> > javascript-将webOS滑块小部件捕捉到整数

javascript-将webOS滑块小部件捕捉到整数

作者:互联网

在webOS应用程序中,我有一个Mojo.Widget.Slider,可用于将整数设置为0、1或2.我已经亲自处理了Slider值(尽管有一项功能可以为您完成此操作,但是我停止使用它,以防万一这是我的问题的根源,但不是这样),但是我希望在用户完成滑动之后,Slider可以捕捉到四舍五入的整数位置.据我所知,没有内置函数可以执行此操作,因此我必须自己执行此操作.我认为类似以下的方法会起作用.

在我的场景助手的设置功能中:

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似乎没有任何作用.有什么想法为什么我的代码不起作用以及如何才能达到预期效果?

注意:我知道我可以使用不同的小部件来实现这种功能,但是我想使用Slider来实现.如果找不到解决方法,可以使用其他方式作为备份.

解决方法:

问题似乎是在小部件的handleModelUpdate中进行的检查.有一个标志(this.seeking),可防止小部件在拖动过程中处理模型更改.当在窗口小部件上发生“放下”时,将清除该标志,但是在清除标志之前2行会触发propertyChange事件.

解决方案可能很简单,只需添加一个非常短暂的超时,这样就可以在重新更新模型之前完成当前脚本的执行.

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
            setTimeout(function() {
                this.mySliderModel.value = sliderValue;
                this.controller.modelChanged(this.mySliderModel);
            }.bind(this), 100);
            break;
        default:
            Mojo.Log.info("mySlider error value: ", event.value);
            break;
    }
}; 

标签:webos,javascript,mojo-sdk
来源: https://codeday.me/bug/20191208/2092000.html