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)
    }
}
});

推測はありますか?

4

2 に答える 2

2

setTimeout関数の引数のコンテキストを現在のインスタンスに変更する必要があります。

setTimeout(function () {  
  this.setValue(10*this.i);
  this.i++;                  
  if (this.i < 11) {
    alert(this.i);
    this.delayedLoop();         
  }                      
}.bind(this), 300);
于 2013-07-03T13:36:07.773 に答える
1

setTimeout主な原因は、ローカルへの接続を失うビルトインだと思いますthis。私はそれを交換しましたがqx.event.Timer.once、それは魅力のように機能します。このPlayground サンプルのコードを参照してください。プレイグラウンドの「ログ」ボタンを押すと、ログ メッセージが表示されます。

于 2013-07-03T13:20:44.067 に答える