2012-04-19 9 views
1

現在の時刻を表示するメッセージボックスを設定しました。タイマーインターバルは1000に設定されており、「タイマー」を開始および停止する2つのボタンがあります。 'stop'ボタンをクリックすると、Ext.TaskManager.stopメソッドが呼び出され、メッセージボックスのテキストが 'paused'に更新されます。ただし、「停止」ボタンをクリックすると、テキストが「一時停止」にわずかに変更された後、再び現在の時刻に戻ります。 Ext.TaskManager.stopAll()を使用しようとしました。 Ext.TaskManager.stop(task)の代わりに、動作します!どうして?以下のように私のコードは:Ext.TaskManager.stop()メソッドを呼び出すときに実行中のタスクを停止できません

<script type="text/javascript"> 
Ext.onReady (function(){ 
      var config={ 
      msg:'Display Time', 
      modal:true, 
      buttons:Ext.Msg.OKCANCEL, 
      fn:displayTime 
      } 

     Ext.MessageBox.msgButtons[0].setText('Start'); 
     Ext.MessageBox.msgButtons[3].setText('Stop');     
     Ext.MessageBox.show(config); 
     function displayTime(id){ 
      if(id=='ok'){ 
       var task = { 
        run:function(){Ext.MessageBox.updateText ('????:' + Ext.util.Format.date(new Date(), 'Y-m-d g:1:s A'));},   
        interval:1000        
        }     
       Ext.TaskManager.start(task); 
      }    
      else { 
       Ext.MessageBox.updateText('Paused!'); 
       Ext.TaskManager.stop(task); 
      }  
    };  
    }); 

答えて

1

タスクは、もしそうならヒットしたとき、そうでなければ、基本的にあなたのタスクを停止することはありませんExt.TaskManager.stop()を実行している中で定義されています。関数宣言の外にタスクを移動します。

 var task = { 
      run: function() { 
       Ext.MessageBox.updateText('????:' + Ext.util.Format.date(new Date(), 'Y-m-d g:1:s A')); 
      }, 
      interval: 1000 
     } 


     function displayTime(id) { 
      if (id == 'ok') { 
       Ext.TaskManager.start(task); 
      } else { 
       Ext.MessageBox.updateText('Paused!'); 
       Ext.TaskManager.stop(task); 
      } 
     }; 
関連する問題