angular watch cycle 或 digest cycle 完成后如何调用函数

how to call function when angular watch cycle or digest cycle is completed

在 angular 完成所有监视周期后,是否有任何方法可以在 angular 中调用自定义函数。

要求 我的控制器内有多个手表功能。现在我只想在angular

执行完所有watch函数后才执行一个函数

摘要完成后,有几种方法可以注册回调。

使用$$postDigest: $scope.$$postDigest 在当前 $digest 周期完成后触发回调。

然而,这 运行 在下一个摘要周期后仅出现一次。在每个摘要周期 运行 之后使其与 $watch 一起使其成为 运行。这是基于代码示例 given here

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

$watch 可以在摘要周期中多次触发,因此我们使用标志 hasRegistered 来防止 $$postDigest 回调被多次注册。 注意:$$postDigest 不会触发另一个摘要循环。因此 $$postDigest 中对 $scope 的任何修改都不会反映在 dom 中。 $$表示这是angularjs中的私有函数,所以该函数不稳定,以后可能会改变。

使用$timeout:

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

当前摘要周期完成后 运行 秒。 注意:第三个参数设置为 false 以防止另一个摘要循环触发。