2013-07-02 5 views
0

나는 qooxdoo에서 초보자이며 "검색"기능에 사용할 자동 진행률 표시 줄을 만들려고합니다. 그건자동 진행 표시 줄

그것이

내가 사용하는 코드를 값을 변경하지 않도록 "에서는 setTimeout"기능을하기 전에 중지 보인다 (팝업은 VBox의 레이아웃 팝업입니다) :

var bar=new hello.automaticProgressBar(); 
bar.delayedLoop(); 
popup.add(bar); 

내 automaticProgressBar.js :

qx.Class.define("hello.automaticProgressBar", 
{ 
    extend : qx.ui.indicator.ProgressBar, 

    construct : function() 
    { 
     this.base(arguments); 
     //var i = 1; 

    }, 
members:{ 
    i:1, 
    delayedLoop : function() 
    { 
     setTimeout(function() 
     { 
      this.setValue(10*this.i); 
      this.i++;     
      if (this.i < 11) 
      { 
       alert(this.i); 
       this.delayedLoop();   
     }      
    }, 300) 
    } 
} 
}); 

아무 것도 없습니까?

+0

어떤 예외 나 오류 메시지가 있습니까? 나는 barra.delayedLoop()을 추측한다; 여기에 하나의 유형 일 뿐이지, 그렇지? bar.delayedLoop();이어야합니다. –

+0

네, 맞습니다. 나는 그것을 스페인어에서 더 분명하게 번역한다. 그러나 나는 그것을 잊었다. bar.delayedLoop(); – Goblinch

답변

2
당신은 현재 인스턴스에 setTimeout의 함수 인수의 컨텍스트를 변경해야

:

setTimeout(function() { 
    this.setValue(10*this.i); 
    this.i++;     
    if (this.i < 11) { 
    alert(this.i); 
    this.delayedLoop();   
    }      
}.bind(this), 300); 
+0

+1 나는 qooxdoo 클래스를 사용하는 것에 그를 찔러야한다고 생각한다. – ThomasH

+0

qooxdoo 클래스를 찾지 못했습니다. ( – Goblinch

1

나는 주된 원인이 로컬 this에 대한 연결을 잃는 setTimeout 내장입니다. 나는 qx.event.Timer.once으로 바꾸 었으며 매력처럼 작동합니다. 이 Playground sample의 코드를 참조하십시오. 로그 메시지를 보려면 운동장의 "로그"버튼을 누르십시오.