Задать вопрос
  • Как избавиться от множественного вызова фабрики в контроллере AngularJS при использовании router?

    evd1ser
    @evd1ser Автор вопроса
    fullstac разработчик знаю много умею чуть меньше))
    В общем получилось вылечить библиотекой https://github.com/btford/angular-socket-io и удалением при дестрое, код может кому пригодится:
    app.controller("some_controller", [
        'angular-socket-io',
        '$scope',
        function (socketio, $scope) {
            var self = this;
            socketio.emit('load_data',{});
            socketio.on('load_data', function (data) {
                    console.log(data);
            });
            $scope.$on('$destroy', function () {
                socket.removeListener('load_data');
            });
    
        }
    ]);

    2 вариант добавить в исходную фабрику метод removeListener (подсмотрено в библиотеке angular-socket-io) и вызывать его вместо подключения библиотеки
    removeListener: function (ev, fn) {
                if (fn && fn.__ng) {
                    arguments[1] = fn.__ng;
                }
                return socket.removeListener.apply(socket, arguments);
            }

    При разрушении вида удаляется обработчик с события =) всем спасибо
    Ответ написан
    Комментировать