我仍然是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,那將是非常好的,所以我們擁有整個應用程序,而不是一小段代碼。 –