Mam moduł. Ma blok konfiguracji, dostawcę i stałą zdefiniowaną. Blok konfiguracji odnosi się zarówno do stałej, jak i dostawcy. Zauważam, że moja stała może być zdefiniowana przed lub po moim bloku konfiguracyjnym. Dostawca musi jednak zostać zdefiniowany PRZED modułem konfiguracji lub w przeciwnym razie wystąpi błąd.Dlaczego dostawca musi być zdefiniowany przed blokiem konfiguracyjnym
Error: [$injector:modulerr] Failed to instantiate module loadOrder due to:
[$injector:unpr] Unknown provider: greetingsProvider
Oto przykładowy kod:
var myModule = angular.module('loadOrder', []);
//if I define this after the config block, I get an error
angular.module('loadOrder').provider('greetings',[ function(){
this.$get = [function(){
return { greet: function(){ return "Hola"; } };
}];
}]);
myModule.config(['$provide', 'greetingsProvider', 'planetName', function($provide, loadOrderProvider, planetName){
$provide.value('someVals',[3,6,8]);
console.log("Lets go to", planetName);
}]);
myModule.constant('planetName', 'Saturn');
Dlaczego tak jest? Dlaczego nie mogę zdefiniować mojego dostawcy po moim bloku konfiguracyjnym?
Wciąż jestem zdezorientowany, ponieważ jeśli odwołuję się do usługi w moim bloku run, nie powoduje to błędu, jeśli usługa jest zdefiniowana po bloku run. Czy wiesz, dlaczego kolejność definicji nie ma znaczenia dla usług/bloków uruchamiania, ale ma znaczenie dla bloków dostawców/konfiguracji? – Selah
@Selah run bloki są wywoływane po wszystko zostało skonfigurowane. – zeroflagL
@zeroflagL Czy możesz wyjaśnić, dlaczego dostawca musi ZDEFINIOWAĆ przed blokiem konfiguracji? Jeśli nic się nie dzieje od razu, dlaczego wystąpiłby błąd, gdyby dostawca został zdefiniowany po bloku konfiguracji, ale nie, jeśli jest zdefiniowany wcześniej? – dnc253