Подтвердить что ты не робот

Как вызвать функцию, когда цикл цикла w2> w500> завершен

Есть ли способ вызвать пользовательскую функцию в angular после angular завершает весь цикл просмотра.

Требование У меня есть несколько функций часов внутри моего контроллера. Теперь я хочу выполнить функцию только после того, как все функции часов выполняются с помощью angular

4b9b3361

Ответ 1

Существует несколько способов регистрации обратного вызова после завершения дайджест.

Использование $$postDigest: $scope.$$postDigest запускает обратный вызов после завершения текущего цикла $digest.

Однако это выполняется только один раз после следующего цикла дайджест. Чтобы запустить его после каждого цикла дайджест, запустите его вместе с $watch. Это основано на примере кода здесь.

var hasRegistered = false;
$scope.$watch(function() {
  if (hasRegistered) return;
  hasRegistered = true;
  $scope.$$postDigest(function() {
    hasRegistered = false;
    fn();
  });
});

$watch может запускаться несколько раз во время цикла дайджеста, поэтому мы используем флаг hasRegistered, чтобы предотвратить обратный вызов $$postDigest для регистрации несколько раз. Примечание: $$ postDigest не инициирует другой цикл дайджеста. Поэтому любая модификация $scope внутри $$postDigest не будет отображаться в dom. $$ означает, что это частная функция в angularjs, поэтому функция нестабильна и может измениться в будущем.

Использование $timeout:

$timeout(function(){
 console.log("Running after the digest cycle");
},0,false);

Это выполняется после завершения текущего цикла дайджеста. Примечание. Третий аргумент имеет значение false, чтобы предотвратить запуск другого цикла цикла.