Ответ 1
Я думаю, это потому, что все поставщики создаются на фабриках, и поэтому поставщик должен зависеть только от других поставщиков.
Как метод, я использую injector
метод angular.module
для создания модуля.
Плункер, который должен делать то, что вы пытаетесь выполнить: http://plnkr.co/edit/g1M7BIKJkjSx55gAnuD2
Обратите внимание, что я также изменил метод factory. Метод factory теперь возвращает объект с методом подключения.
var angularSocketIO = angular.module('socketioModule', ['ng']);
angularSocketIO.factory('socketio', [
'$rootScope',
function($rootScope) {
return {
connect: function(addr) {
var socket = io.connect(addr, {
'sync disconnect on unload': true
});
return socket;
}
};
}]);
angular.module('myApp.services', ['socketioModule'])
.provider('greeter', [
function() {
var injector = angular.injector(['socketioModule']);
var socketio = injector.get('socketio');
var salutation = 'Hello';
this.setSalutation = function(s) {
salutation = s;
}
function Greeter(a) {
this.salutation = salutation;
socket._emit('hello');
this.greet = function() {
return salutation + ' ' + a;
};
}
this.$get = function(version) {
return new Greeter(version);
};
}
]);
var myApp = angular.module('myApp', ["myApp.services"]);