如何防止角度提供程序多次加载

时间:2013-12-03 08:04:50

标签: javascript angularjs socket.io

我有一个提供者(我也尝试过使用相同结果的控制器)。这是我的代码:

.provider('socketio', function() {
    this.socket = io.connect("//localhost);
    console.log("LISTENING...");

    this.$get = function() { [...] }
});

我正在这样注射:

.controller('HeaderCtrl', function($rootScope, $scope, login) { [...] }

.factory('login', function($location, socketio, $rootScope) {

    // socketio operations

})

但是在我的控制台中,我看到两个LOGS,事实上,我有两个socketio,每个都有一个事件监听器。我的控制台充满了双重消息。

Listening message

任何提示?感谢。

1 个答案:

答案 0 :(得分:1)

提供商应该是“工厂”,因此他们不能直接构建他们提供的服务,而只是提供一个get方法,由Angular调用以获得工厂。 它们的使用在Angular documentation中有清楚的描述。 因此,您可以在io.connect方法中移动$get调用。