2017-06-19 18 views
0

Angular1 $ダイジェストサイクルを理解しようとしています。私は複数の記事を読んで、ダイジェストサイクルが毎回の変更で何度も呼ばれることを知っています。 this記事でAngular JSダイジェストサイクルが複数回呼び出されました

それは言う:私たちは$ウォッチリストに$の時計機能のすべてを横断した後

だから、我々は$ダイジェストループで行われますか?いいえ、私たちはもう一度リストを見て、何も変わっていないことを確認します。これは、別の$ watchアイテムが値を更新したときに値の1つに変更があった可能性があるためです。いずれの値にも変更がない限り、このループを継続します。

私の質問は、別の$ watchアイテムが更新されたときに、どのシナリオで値が変更された可能性がありますか?

答えて

2

これは実際の使用例では完璧な例ではないかもしれませんが、このようなことが起こる可能性があります。

$scope.$watch('Var_A', function(){ 
    // change Var_B 
}); 

$scope.$watch('Var_B', function(){ 
    // do something 
}); 

Var_AとVar_Bは、$ウォッチリストに入れられます。 Var_Aを変更する角の変化があると、最初の$ダイジェストサイクルが起動され、Var_Bが変更されます。最初の$ダイジェストサイクルは、Var_Bが変更されたことを認識しません。その後、リストをもう一度見て、Var_Bが変化することがわかります。この後、リストを再び通過し、$ watchリストの何も変更されていないことを確認します。

関連する問題