如何在角度观察周期或摘要周期完成时调用函数



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

要求 我的控制器里有多种手表功能。现在,我只想在angular

执行所有手表功能后执行一个功能

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

使用$$postDigest:CCD_ 2在当前CCD_ 3周期完成后触发回调。

然而,在下一个摘要周期之后,这只运行一次。为了使它在每个摘要循环后运行,请将它与$watch一起运行。这是基于这里给出的代码样本

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,以防止再次触发摘要循环。

最新更新