ng-hide не работает с setInterval

0

HTML:

<div ng-hide="!timeout">
     First
</div>

<div ng-hide="timeout">
    Second   
</div>

JS:

var counter = 0;
$scope.timeout = false;

var interval = setInterval(function loop() { 
    if (++counter == 4){
                clearInterval(interval);
                $scope.timeout = true;
        }
        return loop
}(), 5000);

После запуска результат показал "Первый". После того, как счетчик достиг 4 и $ scope.timeout измените на true, результат все еще отображается "First" вместо "Second".

Спасибо.

  • 4
    Добавьте $scope.$apply() в конце обратного вызова.
Теги:
ionic-framework
setinterval
ng-hide

1 ответ

2
Лучший ответ

setInterval не завершается в $scope.$apply() Либо используйте угловой заданный $interval или добавьте $scope.$apply(); в вашей функции setInterval.

  • 0
    Благодарю. это сработало, я использовал $ интервал вместо $ scope. $ apply (), потому что он получил бы какую-то ошибку - «Ошибка: [$ rootScope: inprog] $ digest уже выполняется».

Ещё вопросы

Сообщество Overcoder
Наверх
Меню