Todavía soy un debutante en Angularjs. Quiero inyectar dinámicamente una dependencia de un servicio (que creé) en mi controlador.
Pero cuando el código A de servicio con dependencias, tengo este error:
error: Desconocido proveedor: $ windowProvider < - ventana $ < - base 64
Este es el código del controlador.
var base64 = angular.injector(['servicesModule']).get('base64');
console.log("base64", base64.encode("my text will be encoded"));
Este código funciona:
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);
}
};
});
Este código no funciona:
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);
}
};
}]);
Otro problema es cuando el servicio está en el mismo módulo que el controlador. Si el módulo tiene dependencias, que no funciona (no tengo la dependencia $ routeProvider en mi módulo de configuración):
error: Desconocido proveedor: $ routeProvider de mainModule
var mainModule = angular.module('main', [],
function($routeProvider, $locationProvider) {
//Some routing code
}
);
JS Fiddles
mismo módulo con dependencias (+ controlador de servicio): http://jsfiddle.net/yrezgui/YedT2/
módulo diferente con dependencias: http://jsfiddle.net/yrezgui/YedT2/4/
módulo diferente y sin dependencias: http://jsfiddle.net/yrezgui/YedT2/5/
Ambos ejemplos deberían funcionar. Si no lo hacen, el problema debe ser en otro lugar. Sería genial si pudieras proporcionar jsFiddle que pudiéramos arreglar, para que tengamos toda la aplicación, en lugar de un pequeño fragmento. –