2012-04-19 4 views
1

Я установил окно сообщения для отображения текущего времени. Интервал таймера установлен как 1000, и есть 2 кнопки для запуска и остановки «таймера». Когда вы нажимаете кнопку «stop», он вызывает метод Ext.TaskManager.stop и обновляет текст в поле сообщения до «паузы». Однако, нажав кнопку «Стоп», и текст был изменен на «Приостановлено» всего на секунду, он снова изменился, чтобы снова отобразить текущее время. Когда я попытался использовать 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); 
      } 
     }; 
Смежные вопросы