ich einen Dienst mit dem folgenden Code:
.service('ChatService', function() {
return { //Gets Data from controller
sendData: function(data) {
this.chatData = data;
console.log('this.chatData: '+this.chatData);
},
chats: this.chatData,
getChats: function() {
return this.chatData;
},
getChat: function(chatId) {
for(i=0; i<this.chats.length; i++) {
if (this.chats[i].id == chatId) {
return this.chats[i];
}
}
}
}
})
Das Wichtige hier ist, dass senddata info
[{id: 1, message: "Chat Message 1"},{id: 2, message: "Message 2"}]
von der Steuerung abgerufen werden. Die getChats in Services werden dann von demselben Controller $scope.chats = ChatService.getChats();
aufgerufen, um sie in der Vorlage anzuzeigen. Wenn auf dieses Element geklickt wird, wird eine neue Seite mit weiteren Informationen angezeigt, daher die Funktion getChat
und getChats
im Dienst. Der Code in der Steuerung für die Seite mehr Details zu laden ist
$scope.chatId = $stateParams.chatId;
$scope.chat = ChatService.getChat($scope.chatId);
Allerdings kann ich bin immer Fehler nicht Eigentum Länge von undefinierten lesen. Nun, wenn ich ändere, um die chats: this.ChatData
in den Diensten
chats: [{id: 1, message: "Chat Message 1"},{id: 2, message: "Message 2"}]
Es wirkt wie ein Zauber, aber ich brauche es in Echtzeit angezeigt werden, was in der Steuerung ist, weil ich das Herunterladen und Empfangen von Daten von dem Server, der sein wird, in Echtzeit für eine Chat-App aktualisiert.
Sie haben SignalR zu verwenden, um verfügt über eine Echtzeit-Reaktion [signalr] (https://github.com/JustMaier/angular-signalr-hub) – Maher