【发布时间】:2015-11-09 19:54:00
【问题描述】:
在使用 Angular 本身之外的事件时,在 Angular 中强制进行摘要的最佳方法是什么 - 例如,在 jqLite 容器中加载图像时,我发现自己正在这样做:
$img.on('load', function () {
$timeout(function () { // Force digest
$scope.isLoaded = true;
});
});
这是我发现自己经常使用的一种模式。然而,它感觉很脏(就像一个hack-dirty,呃)。但是,使用$apply() 可能会触发"digest already in progress" error。我知道我可以check for $scope.$$phase,但感觉同样肮脏。
那么,什么是正确的方法可以让您尽快对 DOM 进行更改?
【问题讨论】:
-
“我发现自己经常使用”。理想情况下,您不需要经常使用它,所以也许您的应用设计可以首先得到改进。
-
@dfsq 是的,我知道这句话有点含糊。 “很多”通常翻译为每当我使用某种外部事件系统时,例如 (jqLite) DOM 事件。如果我正在阅读this answer correctly,那么这正是正确的用例。它仍然感觉,嗯,丑陋。
标签: javascript angularjs rendering render