2017-06-10 10 views
5

Zgodnie z dokumentacją Angular możemy wstrzykiwać tylko Dostawców (nie instancje) w bloki konfiguracji. https://docs.angularjs.org/guide/module#module-loading-dependencies

Ale w przeciwieństwie do tego kątowej pozwala wstrzyknąć $provide lub $inject mimo nich jest Singleton instancji serwisowych.

https://docs.angularjs.org/api/auto/service/$provide

+1

Przeczytaj, czym jest usługodawca: https://docs.angularjs.org/guide/providers (usługa, fabryka, dostawca i inne). (Wszystkie usługi w kanciastych są pojedynczymi instancjami). – ippi

+1

@ippi, myślę, że osoba, która zadała to pytanie, przejrzała dokumentację. Tak więc, jeśli NIE MOŻNA odpowiedzieć, NIE demotuj ludzi. #Nie zbliżaj się –

Odpowiedz

1

To dało mi ciekawy więc zrobiłem kilka badań. Oto co znalazłem:

  1. $ wtryskiwacz nie może być wstrzyknięty do bloków konfiguracyjnych
  2. $ świadczą można wstrzykiwać do bloków konfiguracyjnych

W kodzie, powód 2 jest to, że $provide wkłada się providerCache przed providerInjector (wtryskiwacz używany w blokach konfiguracji) jest tworzony. Gwarantuje to, że zawsze będzie znanym dostawcą dla providerInjector. https://github.com/angular/angular.js/blob/master/src/auto/injector.js#L671

To powiedziawszy, zgadzam się, że jest w stanie wstrzyknąć $provide do bloków konfiguracyjnych wydaje się sprzeczne z ogólną zasadę dotyczącą tego, co może być wstrzyknięty do bloków konfiguracyjnych podanych tutaj: https://docs.angularjs.org/guide/module#module-loading-dependencies

Mimo że jest wyraźnie wykazać, że coś możesz zrobić: https://docs.angularjs.org/guide/module#configuration-blocks

$provide może być tylko jednym wyjątkiem od ogólnej zasady.

Powiązane problemy