Ich habe ein vereinfachtes Beispiel für das Problem unten gemacht. Im Grunde wird die Variable "this.content" nicht durch das Ereignis "socket.on" geändert (das ansonsten ordnungsgemäß funktioniert).Socket.io-Ereignis wird nicht aktualisiert. Winkelgesteuertes Element
index.html:
<div ng-controller="gameController as game">
<button ng-click="game.buttonClick()">This changes the text when clicked.</button>
<div>{{ game.content }}</div>
</div>
controller.app:
app.controller('gameController', function($scope, $http) {
this.content = "Default";
this.buttonClick = function() {
this.content = "Content changes to this, when the button is clicked.";
};
socket.on('gameFound', function() {
this.content = "Content doesn't change to this, when a message is emitted.";
console.log("This message is being logged into the console though.");
});
});
Auf der Server-Seite habe ich eine socket.emit ('gameFound', "Something"), die funktioniert richtig.
Ich denke, das Problem ist, dass "this.content" bezieht sich auf etwas anderes im Kontext von socket.on.
Wie kann ich den Wert von "this.content" in der Funktion socket.on ändern?
Jede Hilfe wird geschätzt.
Das sehr viel Sinn macht, aber es ist nicht auf diese Weise scheint zu funktionieren :(EDIT: Gerade versucht auch die zweite Lösung, die Inhalte nicht wieder geändert hat – Neekoy
@Neekoy. Hast du den "Bind" -Ansatz ausprobiert? – majidarif
10 Yup, habe es gerade erst ausprobiert, und aus irgendeinem Grund funktioniert es nicht. Die Konsole protokolliert, dass "gameFound" korrekt ausgegeben wird, jedoch der Inhalt des {{game.content }} bleibt gleich – Neekoy