angularjs - Event handlers being duplicated when changing routes -
i have data coming @ rate of around 30 times per second , it's being fed app via these event handlers. i'm using btford.socket-io , 0mq responsible getting data node.js server.
i've tracked down data coming node server , realized it's coming correctly, duplication happening on angular side.
what happens every time when leave view , come it, events fired twice as before.
in btford api reference, gives suggestion of using
socket.forward('dataupdate', $scope); $scope.$on('socket:dataupdate', function(ev, data) { $scope.somevar1 = data; $scope.somevar2 = data; $scope.somevar3 = data; $scope.somevar4 = data; });
which helped situation. but, said, in case, event being called 30 times second , handled 4 times there 4 variables. each time change route showing these variables, instead of doing work 4 times, 8 times , 12, 16 , goes on. that, i'm getting memory leak , browser crashes.
does have ideas on how make better?
event listener never removed directly, need remove them forcefully. need deregistered listener while $destroying controller
code
socket.forward('dataupdate', $scope); var socketevent = $scope.$on('socket:dataupdate', function(ev, data) { $scope.somevar1 = data; $scope.somevar2 = data; $scope.somevar3 = data; $scope.somevar4 = data; }); $scope.$on('$destroy', function(){ socketevent(); //deregistering event while destroying controller scope. })
Comments
Post a Comment