angularjs вычисляет разницу во времени между временем начала и текущим временем


Я пытаюсь создать что-то похожее на секундомер в приложении AngularJS.

У меня есть кнопка "Пуск", при нажатии на которую приложение установит переменную startTime, которая получает текущее время, а затем я хочу другую переменную, которая обновляется каждую секунду и вычисляет разницу в секундах между переменной startTime и текущим временем, которое я могу использовать в качестве значения секундомера, отображаемого пользователю. Мне также нужно будет иметь возможность остановить и перезапустить таймер, так что я хотел бы значение секундомера должно быть сохранено в секундах, чтобы я мог легко запустить таймер на любое количество секунд и возобновить таймер.

Как это сделать проще всего?

2 2

2 ответа:

Развивая мои комментарии выше, что-то вроде этого...

var startTime = new Date();
$scope.stopwatch = 0;

$interval(function() {
    $scope.stopwatch = (new Date() - startTime) / 1000;
}, 1000);

И в вашем шаблоне

<p>Seconds: {{ stopwatch }}</p>

Бонусные баллы за создание фильтра для форматирования секунд в формате hh:mm:ss.

Лучший способ достичь этого-использовать $interval следующим образом:

var stop, seconds=0;
stop = $interval(updatingFunc, 1000);
function updatingFunc(){
    seconds++;
    console.log(seconds);
    if(seconds === 4){ // Here you set whatever condition to cancel the interval
        $interval.stop(stop);
    }
}