我是Angular和Node.js的新手。 我的代码执行一个socket.emit到服务器端的函数,并在socket.on事件(“ listartists”)中接收响应。 不幸的是,他在这次比赛中两次进入比赛,我不明白为什么。 在服务器端(app.js),我放置了日志,并且一次正确调用了该函数,但随后两次通过了socket.on('listartists')。
谢谢大家
var appAng = angular.module('appAng', []).controller('myCtrl', function($scope) {
socket.on('listartists', function(msg) {
// !!! enter twice this part of the code
var ClientMessage = JSON.parse(msg);
if (ClientMessage.ClientID == GetClientUniqueId()) {
var artistslist = JSON.parse(ClientMessage.Message);
$scope.$apply(function() {
var artistslist=JSON.parse(ClientMessage.Message);
$scope.artists = artistslist;
});
}
});
});
答案 0 :(得分:0)
我将代码修改为:
socket.on('listartists', function(msg){
var ClientMessage=JSON.parse(msg);
if (ClientMessage.ClientID== GetClientUniqueId())
{
console.log("Arriva Lista Artisti " + ClientMessage.ClientID);
var artistslist =JSON.parse(ClientMessage.Message);
$scope.artists = artistslist;
$scope.$apply( function(){});
}
});
无论如何,如果我删除$ scope。$ apply(function(){}); socket.on事件仅被调用一次, 否则它会从那里经过两次。 我认为问题是SCOPE的管理有些想法吗?