2015-01-08 2 views
0

여러 개의 Dojo HorizontalSlider가 상호 연결되어 있습니다. 슬라이더의 onChange 이벤트에서 다른 슬라이더의 값이 업데이트됩니다. 값을 프로그래밍 방식으로 변경하면 해당 슬라이더의 onChange 이벤트가 발생하고 다시 onChange 이벤트가 발생하고 값이 재정의됩니다.Dojo Slider onChange 프로그래밍 방식으로 값을 변경할 때 이벤트 발생

이 경우에는 priorityChange 플래그를 쓸모 없게 만드는 intermediateChanges = true를 설정해야합니다. 또한 하나의 슬라이더가 활성화되어 있는지 확인하는 변수를 설정하려고했지만 타이밍 문제로 인해이 기능이 작동하지 않습니다. 두 개의 슬라이더

간단한 예 :

var sliding = false; 

var slider1 = new HorizontalSlider({ 
       value: 70, 
       minimum: 0, 
       maximum: 100, 
       discreteValues: 101, 
       intermediateChanges: true, 
       onChange: function() { 
        if (sliding == false) { 
         sliding = true; 
         new_value = [...] 
         slider2.set("value", new_value, false); 
        }; 
        sliding = false; 
       } 
      }, "slider1"); 

var slider2 = new HorizontalSlider({ 
       value: 30, 
       minimum: 0, 
       maximum: 100, 
       discreteValues: 101, 
       intermediateChanges: true, 
       onChange: function() { 
        if (sliding == false) { 
         sliding = true; 
         new_value = [...] 
         slider1.set("value", new_value, false); 
        }; 
        sliding = false; 
       } 
      }, "slider2"); 

slider1.startup(); 
slider2.startup(); 

는 또한 미꾸라지 선택과 같은 문제를 해결하기 위해 보이는이 예제를 발견 : Dojo Select onChange event firing when changing value programatically

슬라이더 때의 OnChange 이벤트를 해고 방지하는 방법 프로그래밍 방식으로 값을 변경하고 있습니까?

감사합니다.

답변

0

어쩌면 조금 못생긴,하지만 당신이 할 수있는 :

var sliding = false; 

var slider1 = new HorizontalSlider({ 
       value: 70, 
       minimum: 0, 
       maximum: 100, 
       discreteValues: 101, 
       intermediateChanges: true, 
       onChange: function() { 
        if (sliding == false) { 
         sliding = true; 
         new_value = [...] 
         slider2.set("intermediateChanges", false); 
         slider2.set("value", new_value, false); 
         slider2.set("intermediateChanges", true); 
        }; 
        sliding = false; 
       } 
      }, "slider1"); 

var slider2 = new HorizontalSlider({ 
       value: 30, 
       minimum: 0, 
       maximum: 100, 
       discreteValues: 101, 
       intermediateChanges: true, 
       onChange: function() { 
        if (sliding == false) { 
         sliding = true; 
         new_value = [...] 
         slider1.set("intermediateChanges", false); 
         slider1.set("value", new_value, false); 
         slider1.set("intermediateChanges", true); 
        }; 
        sliding = false; 
       } 
      }, "slider2"); 

slider1.startup(); 
slider2.startup(); 
관련 문제