gpt4 book ai didi

javascript - AngularJS Socket.io : Cannot read property 'emit' of undefined

转载 作者:行者123 更新时间:2023-12-03 12:17:37 24 4
gpt4 key购买 nike

目前我正在尝试将 AngularJS 与 Node 和 socketio 一起使用。但我收到以下错误。

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

当调用 EnterUsername() 函数时,他似乎不知道“套接字”。我的工厂有问题吗?

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'});
}]);

Controller .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);
}
}]);

最佳答案

您错过了将其添加为字符串:

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

关于javascript - AngularJS Socket.io : Cannot read property 'emit' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24606520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com