2014-07-07 2 views
0

현재 node 및 socketio와 함께 angularjs를 사용하려고합니다. 하지만 다음 오류가 발생합니다.AngularJS Socket.io : 정의되지 않은 'emit'속성을 읽을 수 없습니다.

TypeError: Cannot read property 'emit' of undefined at k.$scope.EnteredUsername (http://localhost:1337/js/controllers.js:34:19)

입력 된 사용자 이름() - 함수가 호출 될 때 그는 '소켓'을 알지 못하는 것처럼 보입니다. 공장에 문제가 있습니까?

app.js :

'use strict'; 

angular.module('myApp', [ 
    'ngRoute', 
    'myApp.filters', 
    'myApp.services', 
    'myApp.directives', 
    'myApp.controllers' 
]) 

.config(['$routeProvider', function($routeProvider) { 
    $routeProvider.when('/viewUsername', {templateUrl: 'partials/username.html', controller: 'usernameCtrl'}); 
    $routeProvider.when('/viewImpressum', {templateUrl: 'partials/impressum.html', controller: 'impressumCtrl'}); 
    $routeProvider.otherwise({redirectTo: '/viewUsername'}); 
}]); 

controllers.js :

'use strict'; 

/* Controllers */ 

angular.module('myApp.controllers', []) 
    .factory('socket', function($rootScope) { 
     var socket = io.connect('http://localhost:1337'); 
     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); 
         } 
        }); 
       }); 
      } 
     }; 
    }) 
    .controller('usernameCtrl', ['$scope', function($scope, socket) { 
     $scope.username = 'guest'; 

     $scope.EnteredUsername = function() { 
      var username = $scope.username; 
      socket.emit('enteredUsername', username); 
     } 
    }]); 

답변

1

당신은 문자열로 추가 놓친 :

.controller('usernameCtrl', ['$scope', 'socket', function($scope, socket) { 
+0

감사합니다! : D 너무 쉬워 ... –

관련 문제