我认为是因为所有提供程序都在工厂之前实例化,因此提供程序仅需依赖其他提供程序。
作为一种解决方法,我正在使用创建模块的
injector方法
angular.module。一个可以完成您想完成的任务的插件:http
://plnkr.co/edit/g1M7BIKJkjSx55gAnuD2
注意,我也更改了工厂方法。现在,factory方法将使用connect方法返回对象。
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"]);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)