使用$ timeout强制Angular中的摘要

时间:2015-11-09 19:54:00

标签: javascript angularjs rendering render

当使用Angular本身以外的事件时,在Angular中强制摘要的最佳方法是什么 - 例如在jqLit​​e容器中加载图像时,我发现自己这样做了:

$img.on('load', function () {
    $timeout(function () { // Force digest
        $scope.isLoaded = true;
    });
});

这是我发现自己经常使用的模式。然而它感觉很脏(就像一个黑客,呃)。但是,使用$apply()可能会触发"digest already in progress" error。我知道我可以check for $scope.$$phase,但感觉同样很脏。

那么,正确的方式是什么,以尽可能快地获得对DOM的更改?

1 个答案:

答案 0 :(得分:0)

您可以改用$scope.$evalAsync()。这也可能为您提供更好的性能,因为该操作可能在已经启动的摘要中执行。

参考:$scope.$evalAsync() vs. $timeout() In AngularJS