У меня есть служба со следующим кодом:
.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];
}
}
}
}
})
Здесь важно то, что sendData извлекает информацию
[{id: 1, message: "Chat Message 1"},{id: 2, message: "Message 2"}]
от контроллера. Затем getChats в службах вызывается $scope.chats = ChatService.getChats();
тем же контроллером для отображения в шаблоне. При нажатии на этот элемент новая страница с дополнительной информацией должна отображать, следовательно, функции getChat
и getChats
в службе. Код в контроллере для страницы для загрузки более подробной информации:
$scope.chatId = $stateParams.chatId;
$scope.chat = ChatService.getChat($scope.chatId);
Однако я получаю сообщение об ошибке, не могу прочитать длину свойства undefined. Теперь, если я изменю chats: this.ChatData
в сервисах на
chats: [{id: 1, message: "Chat Message 1"},{id: 2, message: "Message 2"}]
Это работает как шарм, но мне нужно, чтобы он отображал в реальном времени то, что находится в контроллере, потому что я загружаю и получаю информацию с сервера, которая будет обновляться в режиме реального времени для приложения чата.