How to $inject dynamically dependence in a controller

371 views
Skip to first unread message

Yacine Rezgui

unread,
Oct 6, 2012, 8:33:31 AM10/6/12
to ang...@googlegroups.com

I'm still a debutant on Angularjs, so sorry if my question is a bit stupid. I want to inject dynamically a dependency of a service (that I created) in my controller.

But when I code a service with dependencies, I got this error :

Error: Unknown provider: $windowProvider <- $window <- base64

This is the code of the controller.

var base64 = angular.injector(['servicesModule']).get('base64');
console
.log("base64", base64.encode("my text will be encoded"));

This code works:

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);
       
}

   
};

});

This code doesn't work :

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);
       
}

   
};

}]);

Another problem is when the service is in the same module as the controller. If the module has dependencies, I doesn't work (I have $routeProvider dependence in my module config) :

Error: Unknown provider: $routeProvider from mainModule

var mainModule = angular.module('main', [],
   
function($routeProvider, $locationProvider) {
       
//Some routing code
   
}
);

Please help me.

Yacine Rezgui

unread,
Oct 7, 2012, 7:33:32 AM10/7/12
to ang...@googlegroups.com

JS Fiddles

Same module with dependencies(controller + service) : http://jsfiddle.net/yrezgui/YedT2/

Different module with dependencies : http://jsfiddle.net/yrezgui/YedT2/4/

Different module without dependencies : http://jsfiddle.net/yrezgui/YedT2/5/

Message has been deleted

Yacine Rezgui

unread,
Oct 7, 2012, 7:34:11 AM10/7/12
to ang...@googlegroups.com
Reply all
Reply to author
Forward
Message has been deleted
0 new messages