В приложении webOS у меня есть Mojo.Widget.Slider
, который я использую для установки целого числа в 0, 1 или 2. Я уже сам позабочусь об округлении значения 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
, похоже, ничего не дает, хотя документация и примеры кода показывают, что это может работать. Любые идеи, почему мой код не работает и что я могу сделать для достижения желаемого эффекта?
Примечание. Я знаю, что могу добиться этого, используя разные виджеты, но я хотел бы сделать это с помощью ползунка. Использование чего-то другого - моя резервная копия, если я не могу найти способ заставить это работать.