SORU
17 Ocak 2013, PERŞEMBE


Bu AngularJS factory soket ile kullanım için geliştirmek.ıo

Soket kullanmak istiyorum.ıo AngularJS. Aşağıdaki fabrika buldum:

app.factory('socket', 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);
                    }
                });
            })
        }
    };

ve denetleyici gibi kullanılır:

function MyCtrl($scope, socket) {
    socket.on('message', function(data) {
        ...
    });
};

sorun denetleyicisi başka bir dinleyici ziyaret her zaman eklenir, mesaj alındığında birden çok kez ele alınır.

soket entegre etmek için iyi bir strateji olabilir.AngularJS ile ıo ?

EDİT: fabrikada hiçbir şey, geri dönmek ve orada dinleme, $rootScope kullanabiliyorum biliyorum.$yayın ve $scope.$kontrolörler, ama iyi bir çözüm gibi görünmüyor.

EDİT2: fabrika . eklendi

init: function() {
            socket.removeAllListeners();
}

ve soket kullanan her denetleyici başında Ara.ıo.

hala en iyi çözüm gibi gelmiyor.

CEVAP
17 Ocak 2013, PERŞEMBE


Denetleyici zarar her soket dinleyici çıkarın. Bu gibi $destroy bir olaya bağlamak gerekir:

function MyCtrl($scope, socket) {
    socket.on('message', function(data) {
        ...
    });

    $scope.$on('$destroy', function (event) {
        socket.removeAllListeners();
        // or something like
        // socket.removeListener(this);
    });
};

Daha fazla bilgi için angularjs documentation Kontrol edin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • B3ASTTY™

    B3ASTTY™

    27 Mayıs 2013
  • gadgetgal38

    gadgetgal38

    9 HAZİRAN 2009
  • Mega64

    Mega64

    24 ŞUBAT 2006