Sono ancora un debuttante su Angularjs. Voglio iniettare dinamicamente una dipendenza di un servizio (che ho creato) nel mio controller.Come eliminare in modo dinamico la dipendenza in un controller
Ma quando I Codice un servizio con le dipendenze, ho ottenuto questo errore:
Errore: Sconosciuto fornitore: $ windowProvider < - $ finestra < - base64
Questo è il codice del controller.
var base64 = angular.injector(['servicesModule']).get('base64');
console.log("base64", base64.encode("my text will be encoded"));
Questo codice funziona:
var servicesModule = angular.module('servicesModule', []);
servicesModule.factory('base64', function() {
return {
name: 'base64',
readonly: false,
encode: function(input) {
return window.btoa(input);
},
decode: function(input) {
return window.atob(input);
}
};
});
Questo codice non funziona:
var extModule = angular.module('ext', []);
extModule.factory('base64', ['$window', function($window) {
return {
name: 'base64',
readonly: false,
encode: function(input) {
return $window.btoa(input);
},
decode: function(input) {
return $window.atob(input);
}
};
}]);
Un altro problema è quando il servizio è nello stesso modulo come controller. Se il modulo ha le dipendenze, io non funziona (ho dipendenza $ routeProvider nel mio modulo di configurazione):
Errore: Sconosciuto fornitore: $ routeProvider da mainModule
var mainModule = angular.module('main', [],
function($routeProvider, $locationProvider) {
//Some routing code
}
);
JS Fiddles
stesso modulo con dipendenze (controller + servizio): http://jsfiddle.net/yrezgui/YedT2/
modulo diverso con dipendenze: http://jsfiddle.net/yrezgui/YedT2/4/
modulo diverso, senza dipendenze: http://jsfiddle.net/yrezgui/YedT2/5/
entrambi questi esempi dovrebbero funzionare. Se non lo fanno, il problema deve essere altrove. Sarebbe fantastico se tu potessi fornire jsFiddle che potremmo risolvere, in modo da avere l'intera app, piuttosto che un piccolo frammento di codice. –