Angularjs 角度绑定未使用socket.io广播更新
我有一个名为currentPlayer的服务器变量,它在emit'init'调用中正确绑定,但不会在broadcast.emit中绑定。从客户端传递的变量turnNumber首先会正确更新。当pass事件被触发时,我可以看到currentPlayer在终端中切换值,但我不明白为什么它不会在视图中更新 以前绑定到基元类型时遇到一些问题,所以我尝试执行额外的步骤并将currentPlayer分配给对象数组:$scope.globalVars=[{currentPlayer:data.currentPlayer}],但这没有帮助Angularjs 角度绑定未使用socket.io广播更新,angularjs,socket.io,Angularjs,Socket.io,我有一个名为currentPlayer的服务器变量,它在emit'init'调用中正确绑定,但不会在broadcast.emit中绑定。从客户端传递的变量turnNumber首先会正确更新。当pass事件被触发时,我可以看到currentPlayer在终端中切换值,但我不明白为什么它不会在视图中更新 以前绑定到基元类型时遇到一些问题,所以我尝试执行额外的步骤并将currentPlayer分配给对象数组:$scope.globalVars=[{currentPlayer:data.currentP
//server
var currentPlayer = 1;
socket.emit('init', {
currentPlayer: currentPlayer
});
socket.on('pass', function (data) {
currentPlayer = currentPlayer == 1 ? 2 : 1;
console.log(currentPlayer);
socket.broadcast.emit('pass', {
number: data.turnNumber,
currentPlayer: currentPlayer
});
});
//client
socket.on('init', function (data) {
$scope.globalVar.currentPlayer = data.currentPlayer;
});
socket.on('pass', function (data) {
$scope.globalVar.turnNumber = data.number;
$scope.globalVar.currentPlayer = data.currentPlayer;
});
//click event
$scope.globalVar.turnNumber++;
socket.emit('pass', {
turnNumber: $scope.globalVar.turnNumber
});
<!-- html -->
{{globalVar.currentPlayer}} {{globalVar.turnNumber}}
这些调用似乎是在anuglar上下文之外执行的。尝试在socket.on处理程序中使用$scope.$apply,如
socket.on('pass', function (data) {
$scope.$apply(function() {
$scope.globalVar.turnNumber = data.number;
$scope.globalVar.currentPlayer = data.currentPlayer;
});
});
这些调用似乎是在anuglar上下文之外执行的。尝试在socket.on处理程序中使用$scope.$apply,如
socket.on('pass', function (data) {
$scope.$apply(function() {
$scope.globalVar.turnNumber = data.number;
$scope.globalVar.currentPlayer = data.currentPlayer;
});
});