Любой обновление в объеме, которое не выполняется угловым, не является заметным для углового. поэтому при обновлении любого значения в текущем $scope
вы должны использовать $scope.$apply();
.
Угловой - это двухсторонний механизм привязки данных, поэтому при изменении модели обновляется вид и наоборот. Внутренне угловой пробегает цикл $digest
, который выполняет все проверки в текущем $scope
. Пока вы делаете обновление в переменных $scope
в угловых вещах, как обычно, но вне его, если вы меняете значения с помощью встроенного javascript или других библиотек, таких как jQuery, тогда цикл $digest
должен быть запущен, вот где $scope.$apply()
подходит.
$scope.$digest()
также очень полезно и довольно быстрее, чем $scope.$apply()
, потому что она $scope.$digest()
работает в текущей области, но $scope.$apply()
работает на $rootscope
и внутренне пожаров $rootscope.$digest()
.
$scope.$digest()
Чтобы использовать это в первую очередь, вам нужно настроить наблюдателя за областью видимости и то, что он на самом деле делает, он постоянно наблюдает за изменениями области и любыми средствами, если они находятся из угловых или из других источников, таких как ваши, в этом случае является прекрасным примером для настройки наблюдателя области, если вы хотите использовать его с $scope.$digest()
.
$scope.$watch('reportLoaded', function(newValue, oldValue, scope) {
scope.reportLoaded = newValue !== oldValue ? newValue : oldValue;
});
'{{reportLoaded = false}}' Разве это не всегда устанавливало значение reportLoaded в false? – ODelibalta
спасибо за предложение. Я отредактировал свой вопрос – user3009752