Ho un modulo. Ha un blocco di configurazione, un provider e una costante definita. Il blocco di configurazione fa riferimento sia alla costante che al provider. Ho notato che la mia costante può essere definita prima o dopo il mio blocco di configurazione. Tuttavia, il provider deve essere definito PRIMA del blocco di configurazione oppure viene visualizzato un errore.Perché un provider deve essere definito prima di un blocco di configurazione
Error: [$injector:modulerr] Failed to instantiate module loadOrder due to:
[$injector:unpr] Unknown provider: greetingsProvider
Ecco alcuni esempi di codice:
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');
Perché è questo? Perché non posso definire il mio provider dopo il mio blocco di configurazione?
Sono ancora confuso perché se faccio riferimento a un servizio nel mio blocco di esecuzione, non causa un errore se il servizio è definito dopo il blocco di esecuzione. Sai perché l'ordine di definizione non ha importanza per i servizi/blocchi di esecuzione ma è importante per i blocchi di provider/configurazione? – Selah
@I blocchi di esecuzione di Sah vengono chiamati dopo che tutto è stato impostato. – zeroflagL
@zeroflagL Potete chiarire perché il provider deve DEFINED prima del blocco di configurazione. Se non accade nulla immediatamente, perché dovrebbe esserci un errore se il provider viene definito dopo il blocco di configurazione, ma non se è stato definito prima? – dnc253