Terdapat kod ng berikut:
$scope.safeApply = function(fn){
var phase = this.$root.$$phase;
if (phase == '$apply' || phase == '$digest') {
if (fn && ( typeof (fn) === 'function')) {
fn();
}
} else {
this.$apply(fn);
}
}
Maksud kod ini adalah untuk menyatakan sama ada perlu untuk memanggil skop.$apply() untuk melaksanakan fungsi fn. Jika tidak, hubungi fn terus Jika perlu, panggil skop.$apply(fn).. .
Walau bagaimanapun, saya ingin tahu apakah $root.$$phase dan mengapa ia boleh digunakan untuk menentukan sama ada $apply perlu dilaksanakan. Saya harap seseorang yang memahami prinsip ng dapat membantu menjawabnya~ Terima kasih~~~
$$phase
ialah bit bendera status yang digunakan secara dalaman oleh angluar untuk mengenal pasti sama ada ia berada dalam keadaan ringkasan pada masa ini.Biasanya program tidak perlu mengambil berat tentang status ini (dua
$
pada permulaan menunjukkan bahawa ia digunakan secara dalaman Jika anda menulis kod yang perlu mengambil berat tentang status ini, seperti inisafeApply
, maka ia mesti ada masalah.