Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用$timeout强制输入角度摘要_Javascript_Angularjs_Rendering_Render - Fatal编程技术网

Javascript 使用$timeout强制输入角度摘要

Javascript 使用$timeout强制输入角度摘要,javascript,angularjs,rendering,render,Javascript,Angularjs,Rendering,Render,在使用Angular自身之外的事件时,强制使用Angular摘要的最佳方法是什么?例如,在jqLite容器中加载图像时,我发现自己正在这样做: $img.on('load', function () { $timeout(function () { // Force digest $scope.isLoaded = true; }); }); 这是我发现自己经常使用的一种模式。然而,它感觉非常脏(就像一个肮脏的黑客,啊)。但是,使用可能会触发错误。我知道我可以,

在使用Angular自身之外的事件时,强制使用Angular摘要的最佳方法是什么?例如,在jqLite容器中加载图像时,我发现自己正在这样做:

$img.on('load', function () {
    $timeout(function () { // Force digest
        $scope.isLoaded = true;
    });
});
这是我发现自己经常使用的一种模式。然而,它感觉非常脏(就像一个肮脏的黑客,啊)。但是,使用可能会触发错误。我知道我可以,但那感觉同样肮脏


那么,要尽快获得对DOM的更改,正确的方法是什么?

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


参考资料:

“我发现自己使用了很多”。理想情况下,你不需要经常使用它,所以也许你的应用程序设计可以在第一时间得到改进。@dfsq是的,我知道这个短语有点含糊不清。“很多”通常是指每当我使用某种外部事件系统时,比如(jqLite)DOM事件。如果我正在阅读,那么这正是正确的用例。只是感觉还是很难看。