Mein Verständnis von $$ postDigest ist, dass es eine Möglichkeit ist, einen Rückruf nach dem aktuellen Digest-Zyklus zu feuern - ohne dabei einen neuen Digest-Zyklus zu verursachen.
Bedeutet dies jedoch, dass alle DOM-Effekte, die durch den aktuellen Digest-Zyklus verursacht werden, für den Rückruf im $$ postDigest sichtbar sind.
der Pseudo-Code unten angegeben:
//some code affecting the width of an element and triggering a digest loop
myModel.width = 10; //bound back to dom element with id = 'myId'
$$postDigest(function(){
//some callback running after the most recent digest loop
//gets the width of a DOM element by reading the value directly from the DOM element
//that was changed in the previous digest loop
var width = $('#myId').width();
//Will width always be 10 here?
});
Werfen wir einen Grenzwert in der Stromschleife führt zu ändern, um die Breite eines DOM-Element verdauen nehmen. Dann feuere ich in $$ postDigest einen Callback mit einem Legacy-Code, der die geänderte Breite direkt vom DOM-Element liest. Ist es sicher, den Wert aus dem DOM-Element in $$ postDigest zu lesen, da dies nach Abschluss des Digest-Zyklus passieren soll? Mit anderen Worten, sollte der Browser fertig sein, um die Auswirkungen des Digest-Zyklus zu reproduzieren, wenn das $$ postDigest ausgeführt wird?
Ich bin kein Fan von diesem Muster, haben aber mit einigen nicht Winkel Code