Доброго дня всем. Есть небольшой проект на angular + socket.io + nodejs
Приложение имеет всего два маршрута
Пример:
$routeProvider.
when('/', {
templateUrl: '/tpl',
controller: 'MainCtrl'
}).
when('/other', {
templateUrl: 'other.tpl',
controller: 'OtherCtrl'
}).
.otherwise({
redirectTo: '/'
});
При первой загрузке приложен все работает как положено,
socket.on( 'new user' , function ( data ){
console.log(1);
$scope.UserList.push(JSON.parse(data));
});
но когда "походишь" по маршрутам то некоторые функции вызываются по несколько раз.
$scope.UserList.push(JSON.parse(data));
Код выше отработает несколько раз ( все зависит от того сколько раз я менял урл )
К примеру я пять раз сменил урл - 5ть раз сработал push()
socket - вынес в сервис
---------------------------------------
MyApp.factory('socket', ['$rootScope', function ($rootScope) {
var safeApply = function(scope, fn) {
if (scope.$$phase) {
fn();
} else {
scope.$apply(fn);
}
};
var socket = io.connect(URL_TO_SOCKET);
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments;
safeApply($rootScope, function () {
callback.apply(socket, args);
});
});
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, function () {
var args = arguments;
safeApply($rootScope, function () {
if (callback) {
callback.apply(socket, args);
}
});
})
},
disconnect: function () {
socket.disconnect();
},
socket: socket
};
}]);
Подскажите как решить эту проблему?