У меня есть переменная, которая изменяется после или во время цикла дайджеста, и эта переменная не отображается на веб-странице, которая ссылается на нее через AngularJS, пока не будет нажата кнопка - фактически любая кнопка.
Я пыталсяsetTimeout, обертывающий scope.apply, и я сделал тайм-аут достаточно длинным, чтобы тайм-аут действительно имел место после изменения переменной, но безуспешно, чтобы изменение отразилось на веб-странице.
Я добавил этот код, который, согласно другому сообщению о переполнении стека, должен быть пуленепробиваемым:
setTimeout(function () {
$scope.$apply(function () {
$scope.message = "Timeout called";
//ADDED BELOW
$scope.curentUserAuthority = GlobalService.currentUserAuthority;
$scope.currentUserViewName = GlobalService.currentUserViewName;
//ADDED ABOVE
LoggingService.info('Timeout called!!!');
});
}, 10000);
Тайм-аут действительно происходит после изменения переменной, и сообщение «Тайм-аут вызван» выводится на консоль, но ничего не происходит сстраница интернета.Я думал, что $ scope.apply запустит новый цикл дайджеста, как нажатие кнопки.Что я делаю неправильно?Спасибо за ваше время.
РЕДАКТИРОВАТЬ: Это работает, когда я добавляю две строки между ДОБАВЛЕННЫМИ комментариями выше.Чего я не понимаю, так это почему я должен делать это, когда у меня есть процедуры просмотра, ищущие изменения в этих переменных.Пример одного
$scope.$watch('currentUserAuthority', function() {
LoggingService.info(' WATCHING YOU currentUserAuthority is '+$scope.currentUserAuthority);
});
Вышеприведенная функция никогда не сработает, пока функция ПОСЛЕ моего $ scope. $ Apply не будет выполнена в результате моего тайм-аута.Weird.Я что-то не понимаю?