Wenn ich eine Direktive habe, die auf den Status eines bestimmten Attributs im Bereich reagiert, und ich dieses Attribut in meinem Test ändern und überprüfen möchte, ob es korrekt reagiert, wie kann ich diese Änderung am besten durchführen?
Ich habe beide Muster gesehen:
scope.$apply(function() {
scope.myAttribute = true;
});
und
scope.myAttribute = true;
scope.$digest();
Was ist der Unterschied zwischen ihnen und was ist besser und warum?
quelle
$digest
auch die Kinder des Oszilloskops angerufen?$digest
feuert nicht nur Beobachter auf den aktuellen Umfang, sondern auch auf alle seine Kinder.Wie in der Dokumentation selbst erwähnt, wird der $ Digest-Zyklus jederzeit ausgeführt
$scope.$apply
. Gemäß Entwicklerhandbuch zum UmfangUnd gemäß der Scope API- Dokumentation
Sie sollten also nicht explizit aufrufen
$digest
, da Ihre aufrufende$apply
Methode einen Digest-Zyklus auslösen würde.quelle