有角度完成所有观察周期之后,是否有任何方法可以在角度中调用自定义功能。
要求 我的控制器内有多个监视功能。现在我想在只有角度
执行所有监视功能后执行一个函数答案 0 :(得分:59)
摘要完成后,有几种方法可以注册回调。
使用$$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不会触发另一个摘要周期。因此,对$scope
内的$$postDigest
的任何修改都不会反映在dom中。 $$
表示这是angularjs中的私有函数,因此函数不稳定,将来可能会发生变化。
使用$timeout
:
$timeout(function(){
console.log("Running after the digest cycle");
},0,false);
这在当前摘要周期完成后运行。 注意:第三个参数设置为false以防止另一个摘要周期触发。