Das Verständnis, dass die Angular-Dokumente die Überprüfung des $$phase
eine Anti-Muster habe ich versucht, die $timeout
et _.defer
zur Arbeit.
Die Timeout- und Deferred-Methoden erzeugen einen Flash von unparsed {{myVar}}
Inhalt im Dom wie ein FOUT . Für mich war das nicht akzeptabel. Es lässt mir nicht viel, wenn mir dogmatisch gesagt wird, dass etwas ein Hack ist, und ich keine geeignete Alternative habe.
Das Einzige, was jedes Mal funktioniert, ist:
if(scope.$$phase !== '$digest'){ scope.$digest() }
.
Ich verstehe die Gefahr dieser Methode nicht, oder warum sie von Leuten in den Kommentaren und dem Angular-Team als Hack bezeichnet wird. Der Befehl scheint präzise und einfach zu lesen:
"Machen Sie die Verdauung, es sei denn, es findet bereits eine statt"
In CoffeeScript ist es sogar noch hübscher:
scope.$digest() unless scope.$$phase is '$digest'
Was ist das Problem dabei? Gibt es eine Alternative, die kein FOUT erzeugt? $safeApply sieht gut aus, verwendet aber die $$phase
Inspektionsmethode.