Додзе Слайдер - PullRequest
       10

Додзе Слайдер

0 голосов
/ 05 марта 2019

Я пытаюсь с помощью onChange определить, перемещается ли горизонтальный ползунок додзё справа налево. Это происходит в IBM XPages, но область кода CSJS ниже должна быть универсальной. Как использовать свойство _isReversed, чтобы получить значение true / false?

<xe:djHorizontalSlider
style="margin-left:5px;width:200px;height:20px"
id="djHorizontalSlider1" showButtons="false" 
defaultValue="1" maximum="15" minimum="1"
intermediateChanges="true" 
discreteValues="8" value="#{viewScope.sliderNumber1}">
<xe:this.converter>
<xp:convertNumber integerOnly="true"
type="number">
</xp:convertNumber>
</xe:this.converter>

<xp:eventHandler event="onChange" submit="false">
<xe:this.script><![CDATA[

//I WANT TO DETECT IN THIS CSJS 
//IF THE SLIDER WAS DRAGGED RIGHT TO LEFT

}]]></xe:this.script>
</xe:djHorizontalSlider>

1 Ответ

1 голос
/ 06 марта 2019

Когда происходит событие onChange, виджет уже изменил свои внутренние значения, что делает практически невозможным обнаружение каких-либо изменений здесь. Но я написал небольшой обходной путь, чтобы определить, перемещался ли ползунок справа налево.

Вы должны поместить этот код в ваш обработчик onChange. Он сохраняет текущее значение в атрибуте данных на самом виджете. Когда происходит другое изменение, оно будет проверено на соответствие новому значению и обновлено новым значением. Таким образом, вы можете сравнить предыдущее значение (также может быть начальным) с новым значением.

Надеюсь, это работает для вас!

// find dojo widget
var w = dijit.byId("#{id:djHorizontalSlider1}");

// get previous value from attribute (or default value)
var previousValue = dojo.attr(w.domNode,"data-prev-value") || w.params.value;

// log info about current and previous value
console.log("new value=" + thisEvent);
console.log("previous value=" + previousValue);

//save new value
dojo.attr(w.domNode,"data-prev-value",thisEvent);

// check value 
if(parseInt(thisEvent) < parseInt(previousValue)){

    alert("Detected slide right to left! new value="+thisEvent+", old value="+previousValue);
}
...