@Oyaseo
beginner programmist

Почему перерисовка тимплейта происходит только после взаимодействия с элементами страницы?

Есть такая функция, отрабаывает нормально, в консоле выводит всё отлично, своевременно, но значение таймера в тимплейте обновляется только если кликнуть на какой нибудь input или button
$scope.startTime = function(){

                var Timer;
                var TotalSeconds;

                function CreateTimer(TimerID, Time) {
                    TotalSeconds = Time;
                    UpdateTimer();
                    setTimeout(Tick, 1000);
                }

                function Tick() {
                    if (TotalSeconds <= 0) {
                        return 0;
                    }
                    TotalSeconds -= 1;
                    UpdateTimer();
                    setTimeout(Tick, 1000);
                }

                function UpdateTimer() {
                    var Seconds = TotalSeconds;
                    var Days = Math.floor(Seconds / 86400);
                    Seconds -= Days * 86400;
                    var Hours = Math.floor(Seconds / 3600);
                    Seconds -= Hours * 3600;
                    var Minutes = Math.floor(Seconds / 60);
                    Seconds -= Minutes * 60;
                    var TimeStr = Days > 0 ? Days + "days " : "" + LeadingZero(Hours) + ":" + LeadingZero(Minutes) + ":" + LeadingZero(Seconds);
                    $scope.testTimeout();
                    $scope.test_timer = TimeStr;
                    $scope.$digest();
                }

                function LeadingZero(Time) {
                    return (Time < 10) ? "0" + Time : +Time;
                }

                CreateTimer('timer', getTimeout());
            }
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
Судя по всему до $scope.$digest у вас не доходит.
Для решения проблемы нужно использовать ангуляровский $timeout.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы