Nadal jestem debiutantem w Angularjs. Chcę dynamicznie wstrzykiwać zależność usługi (którą stworzyłem) w moim kontrolerze.
Ale kiedy kod usługi z zależnościami, mam ten błąd:
Error: Unknown provider: $ windowProvider < - $ okno < - base64
Jest to kod regulatora.
var base64 = angular.injector(['servicesModule']).get('base64');
console.log("base64", base64.encode("my text will be encoded"));
Ten kod działa:
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);
}
};
});
Ten kod nie działa:
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);
}
};
}]);
Innym problemem jest, gdy usługa jest w tym samym module jako kontrolera. Jeśli moduł ma zależności, że nie działa (mam $ routeProvider zależność w moim module config):
Error: Unknown provider: $ routeProvider z mainModule
var mainModule = angular.module('main', [],
function($routeProvider, $locationProvider) {
//Some routing code
}
);
JS Fiddles
sam moduł z zależnościami (kontroler + usługa): http://jsfiddle.net/yrezgui/YedT2/
innego modułu z zależności: http://jsfiddle.net/yrezgui/YedT2/4/
innego modułu bez zależności: http://jsfiddle.net/yrezgui/YedT2/5/
oba te przykłady powinny działać. Jeśli nie, problem musi być gdzie indziej. Byłoby wspaniale, gdybyś mógł zapewnić jsFiddle, którą moglibyśmy naprawić, abyśmy mieli całą aplikację, a nie mały fragment. –