Jeśli mam dyrektywę, która reaguje na stan konkretnego atrybutu w zakresie i chcę zmienić ten atrybut w moim teście i sprawdzić, czy odpowiada poprawnie, jaki jest najlepszy sposób wprowadzenia tej zmiany?
Widziałem oba te wzorce:
scope.$apply(function() {
scope.myAttribute = true;
});
i
scope.myAttribute = true;
scope.$digest();
Jaka jest między nimi różnica i co jest lepsze i dlaczego?
źródło
$digest
także dzieci lunety?$digest
nie tylko strzela do obserwatorów z obecnego zakresu, ale także do wszystkich swoich dzieci.Jak sama dokumentacja wspomina, cykl $ strawienia jest wykonywany za każdym razem, gdy to zrobisz
$scope.$apply
. Zgodnie z instrukcją programisty dotyczącą zakresuI zgodnie z dokumentacją Scope API
Więc nie powinieneś jawnie wywoływać
$digest
, wywołanie$apply
metody wywołałoby cykl podsumowania.źródło