我仍然是Angularjs的首席执行官。 我想在我的控制器中动态注入服务(我创建的)的依赖关系。如何在控制器中注入动态依赖关系
但是,当我代码依赖关系的服务,我得到这个错误:
错误:未知提供商:$ windowProvider < - $窗口< - 的base64
这是控制器的代码。
var base64 = angular.injector(['servicesModule']).get('base64');
console.log("base64", base64.encode("my text will be encoded"));
此代码:
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);
}
};
});
此代码不起作用:
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);
}
};
}]);
的另一个问题是,当服务是同一个模块控制器英寸 如果模块依赖关系,我不工作(我有$ routeProvider在我的模块配置的依赖):
错误:未知提供商:$ routeProvider从mainModule
var mainModule = angular.module('main', [],
function($routeProvider, $locationProvider) {
//Some routing code
}
);
JS小提琴与依赖
同一模块(控制器+服务):http://jsfiddle.net/yrezgui/YedT2/
不同模块与依赖关系:http://jsfiddle.net/yrezgui/YedT2/4/
不同的模块,而不依赖关系:http://jsfiddle.net/yrezgui/YedT2/5/
这两个例子都应该有效。如果他们不这个问题必须在其他地方。如果您可以提供我们可以修复的jsFiddle,那将是非常好的,所以我们拥有整个应用程序,而不是一小段代码。 –