javascript - angularjs not using $rootscope and $broadcast -


so i'm trying find way prevent using $rootscope ,$broadcast , $apply. let me show code first:

         app.controller('firstcontroller', function ($scope, servicechatbuddy, socketlisteners){               $scope.chatbuddy = servicechatbuddy;             $scope.$on('user delete:updated', function (event, id) {                 $scope.chatbuddy.users[id]['marker'].setmap(null);                 delete $scope.chatbuddy.users[id];             });             $scope.$on('loadposition:updated', function (event, data) {                 $scope.$apply(function () {                     $scope.chatbuddy.users[data.id] = data.obj;                 });              // , bunch more these             });           }) 

the socketlisteners 3rd party libary (socket.io )which implemented in factory broadcast data when event has occured

      socketmodule.factory('socketlisteners', function ($rootscope, decoratefactory) {           var sockets = {};           var socket = io.connect('http://localhost:8000');           sockets.listen = function () {                 socket.on('loadposition', function (data) {                     $rootscope.$broadcast('loadposition:updated', data)             });             socket.on('client leave', function (id) {                 $rootscope.$broadcast('user delete:updated', id);             });             // , bunch more of these        }); 

as can see code exist alot of $rootscope $broadcasts , $apply;

so i'm struggling find way more 'professional'. hints tricks best practices absolutely welcome! cheers

try https://github.com/btford/angular-socket-io

socket.js (service)

angular.module('app') .service('socket', function (socketfactory) {     var socket = io.connect('http://localhost:8000');      var mysocket = socketfactory({         iosocket: socket     });      return mysocket; }); 

firstcontroller.js

app.controller('firstcontroller', function ($scope, socket){      socket.forward('user delete:updated', $scope);     socket.forward('loadposition:updated', $scope);      $scope.$on('user delete:updated', function (event, id) {         $scope.chatbuddy.users[id]['marker'].setmap(null);         delete $scope.chatbuddy.users[id];     });     $scope.$on('loadposition:updated', function (event, data) {         $scope.$apply(function () {             $scope.chatbuddy.users[data.id] = data.obj;         });         // , bunch more these     }); }); 

when scope destroyed, listeners destroyed :)


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -