2016-04-13 4 views
0

Я использую $interval в своем проекте.

здесь код из моего контроллера:

self.timer = $interval(function() { 
     checkUpdate(); 
    }, 10000, false); 

function checkUpdate() { 
    sensorsDataServise.checkForUpdate("2012-10-04T16:10:00") 
    .then(function (result) { 
     if (result.status == '200') { 
      //here to stop the $interval 
      return result.data; 
     } 
    }); 
} 

function modalClosed() { 
    //here to start $interval 
} 

мне нужно остановить и запустить $interval службу.

Я пытаюсь использовать этот $interval.cancel(self.timer) в checkUpdate функции и

Я пытаюсь использовать этот $interval.start(self.timer) в modalClosed функции.

Но я получаю сообщение об ошибке:

$interval.cancel and $interval.start is not a function.

Как я могу осуществить остановку и начать использовать $interval службы.

+0

Простите мое невежество ... Что такое "$ интервал? – MarcoS

+0

@MarcoS: '$ interval' - это угловой js определенный метод setInterval, который запускает определенные строки кода для после некоторого интервала/задержки .https: //docs.angularjs.org/api/ng/service/$interval – dreamweiver

+0

Спасибо, прости! Я не знал об этом ... :(( – MarcoS

ответ

3

Я бы сказал: RTFM ->https://docs.angularjs.org/api/ng/service/$interval

Более точно: для начала вам не нужно .start просто сделать

var stopHandler = $interval(myFn); 

Чтобы остановить сделать:

$interval.cancel(stopHandler); 

Тот факт, что $ interval.cancel, по-видимому, не определен в вашем примере кода, может быть вызвано проблемой инъекции, покажите нам свое определение контроллера/службы, которое совпадает с кодом, который вы нам показали

+0

И как мне его снова запустить после отмены ? – Michael

+0

@ Майкл, вам просто нужно начать новый интервал – ndsmyter

1

$interval имеет метод .cancel, который отменяет текущий таймер, но нет метода под названием start.

Чтобы запустить таймер, вам просто нужно запустить $internal внутри modalClosed и очистить тот же таймер внутри checkUpdate().

Примечание: Убедитесь, что функция ModalClosed() выполнена, а затем checkUpdate() еще self.timer объект не будет определен.

JS КОД:

var self = this; 

function checkUpdate() { 
     sensorsDataServise.checkForUpdate("2012-10-04T16:10:00") 
     .then(function (result) { 
      if (result.status == '200') { 
       //here to stop the $interval 
       $internal.cancel(self.timer); 
       return result.data; 
      } 
     }); 
    } 



function modalClosed() { 
    //here to start $interval 
    self.timer = $interval(function() { checkUpdate(); }, 10000, false); 
} 
+0

И как я могу отрегулировать интервал от шаблона? Я пытаюсь использовать это: – Michael

+0

Но это не работает – Michael

+0

yo call from template, вам просто нужно вызвать '$ interval', чтобы запустить таймер, в вашем случае вам нужно позвонить 'modalClosed()' – dreamweiver

Смежные вопросы