Jestem ciekaw, czym dokładnie są dekoratorzy w AngularJS. W Internecie nie ma zbyt wielu informacji dla dekoratorów, z wyjątkiem notki w dokumentacji AngularJS i krótkiej (choć interesującej) wzmianki w wideo na YouTube .
Jak to ujęli faceci z Angular, dekoratorem jest:
Dekoracja usługi, pozwala dekoratorowi przechwycić tworzenie instancji usługi. Zwrócone wystąpienie może być oryginalnym wystąpieniem lub nowym wystąpieniem, które jest delegowane do oryginalnego wystąpienia.
Naprawdę nie wiem, co to oznacza , i nie jestem pewien, dlaczego miałbyś oddzielić tę logikę od samej usługi. Na przykład, gdybym chciał zwrócić coś innego w różnych warunkach, po prostu przekazałbym różne argumenty do odpowiednich funkcji lub użył innej funkcji współdzielącej ten stan prywatny.
Nadal jestem noobem z AngularJS, więc jestem pewien, że to po prostu ignorancja i / lub złe nawyki, które wyłowiłem.
źródło
Dekoratorzy pozwalają nam oddzielić kwestie przekrojowe i pozwalają usługom zachować zasadę pojedynczej odpowiedzialności bez martwienia się o kod „infrastruktury”.
Praktyczne zastosowania dekoratorów:
We wszystkich tych przypadkach ograniczamy kod w serwisie do jego głównej odpowiedzialności.
źródło
decorator
może przechwycić instancję usługi utworzoną przezfactory, service, value, provider
i daje opcje zmiany niektórych,instance(service)
których w innym przypadku nie można skonfigurować / z opcjami.Może również udostępniać przykładowe instancje do celów testowych, na przykład
$http
.źródło
directive
definicje przedstawione przez Bena NadelaKrótko mówiąc, można powiedzieć, że jest to metoda rozszerzająca. Dla Ex. Mamy klasę, która ma dwie metody, aw czasie wykonywania chcemy dodać do niej więcej metod, a następnie używamy dekoratora.
Nie możemy użyć zmiennej $ provider.decorator ze stałymi, ponieważ nie możemy zmienić stałych, które mają, jako właściwość tylko do odczytu.
źródło
W skrócie dekoratorów można opisać następująco: -
Korzysta z
$provide
usługi w sposób kątowy i modyfikuje lub zastępuje implementację innej usługiPrzykład:
Aplikacje
Oprócz odpowiedzi @JBland.
Ustawienia regionalne aplikacji: -
Można znaleźć przykład tutaj
Zmiana domyślnego zachowania i istniejącej implementacji usługi przez usługę kątową: -
Możesz znaleźć przykład tutaj
Przełączanie funkcji w różnych środowiskach.
źródło