Добрый день, есть фабрика:
app.factory('socketio', ['$rootScope', function ($rootScope) {
var socket = io.connect('/');
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments;
$rootScope.$apply(function () {
callback.apply(socket, args);
});
});
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, function () {
var args = arguments;
$rootScope.$apply(function () {
if (callback) {
callback.apply(socket, args);
}
});
})
}
};
}]);
Она подключается в контроллер который привязан к роутеру, тоесть при переключении вкладок создается множественный вызов фабрики, и обработчики на событие срабатывают пропорциональное количество раз
app.controller("some_controller", [
'socketio',
function (socketio) {
var self = this;
socketio.emit('load_data',{});
socketio.on('load_data', function (data) {
// срабатывает пропорцианально открытию роута
console.log(data);
});
}
]);
Подскажите пожалуйста, как при переключении вкладок разрушать слушатель события чтобы не дублировались вызовы?