2016-11-14 48 views
0

我已經找到了使用$消化()內的setTimeout(),不知道的一個例子,如果是用這種方式一個很好的做法:

setTimeout(function(){ 

    scope.$digest(); 
}) 

任何幫助將不勝感激!

回答

1

這是因爲基本的javascript函數不會被Angular拾取。我不會說這是一個很好的做法,因爲這個東西的角度都有自己的服務,即$timeout服務:

$timeout(function(){ 
    // everything in here will be picked up by angular's digest cycle 
}); 

$scope.$digest()是手動觸發角的消化週期的方式,但我想不出任何你想要的用例。

即使如果你有一個發生在本地JavaScript代碼,我會做這樣的:

setTimeout(function() { 
    $scope.$apply(function() { 
     // do stuff that will be picked up by angular 
    }); 
} 
+1

'$範圍$摘要()'肯定有它的使用情況。與'$ scope。$ apply()'相反,它只觸發當前範圍的摘要,而不是整個層次結構。但是OP不太可能這樣認爲。 – estus