[英]Angularjs - Digest Loop/Repaint timing
AngularJS有一個小問題。 請參閱以下內容:
$http({method: 'GET', url: 'some/url/withJSON.json'})
.success(function(data)
{
$scope.data = data
$animations._load('arg1')
})
$ animations是一個注冊服務,可以執行某些操作。 偶爾(大約20%)_load()方法將在窗口繪制/摘要循環完成之前運行的時間,這意味着可視化尚未完成。 通過以10ms的setTimeout()包裝_load()可以解決此問題,但是摘要循環完成后,AngularJS中是否存在隱式/顯式的方法來執行回調?
如果沒有更多信息,我建議$timeout(fn)
將是最好的方法。 基本上,它可以確保在完成對角度的處理后,瀏覽器才能呈現出來。 大致上它等效於setTimeout(fn, 0)
,因此您已經建議過,但是對於測試來說它是可模擬的。
還有$scope.$evalAsync(fn)
通常會在當前摘要循環之后但在DOM渲染之前渲染。 我傾向於$evalAsync
因為它使我更容易推理,並且在此期間不會發生其他非角度事件,但這取決於哪個對您$evalAsync
。
該答案具有有關這兩種方法的更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.