我正在使用SignalR网络聊天应用程序创建一个简单的AngularJS。我有许多功能正常工作,但是我想创建一种可维护的方式来接收消息,因为服务器将它们发送出去,等等。我遇到了我的最后一个问题,我似乎找不到从我的SignalRData服务回到它所在的服务的方法。所以我的层次结构如下。
我的聊天视图中有一个使用SessionState服务的控制器。
我有用SignalRData编写的方法来处理从服务器接收消息的方法如何将数据发送到存储在SessionState内的数组中,以便我的聊天控制器可以使用它绑定到ng-repeat来创建聊天窗口?
我所有有用的代码
接收消息的SignalRData服务部分:
// Create a function that the hub can call to broadcast messages.
chat.client.incomingMessage = function (data) {
console.log("New message from " + data.sender + ": " + data.message + ".");
};
我也是这项服务的对象:
// Declare a proxy to reference the hub.
var chat = $.connection.chatHub;
var State = {
Connection:
{
Connected: false,
Connection_Id: "",
Method: "auto",
chat: chat.client
}
};
SessionState服务中发生了什么: 这已经简化了观看
var State = {
Server: {
DataService: SignalRData
},
Messages: {
Chats: []
}
};
聊天控制器:
我最初的想法是,我可以通过我的服务共享chat.client对象,然后在我的控制器中覆盖该功能,遗憾的是这没有工作,所以我很难想办法从中获取数据SignalRData进入SessionState。
(function () {
'use strict';
angular
.module('Controllers')
.controller('chat_Controller', chat_Controller);
chat_Controller.$inject = ['$scope', 'SessionState'];
function chat_Controller($scope, SessionState) {
$scope.pageClass = "";
SessionState.Session.ValidatePage("User");
SessionState.Session.SmoothSlide("Heading");
SessionState.Server.DataService.Connection.chat.incomingMessage = newMessage;
function newMessage(data) {
console.log("Testing");
};
}
})();
答案 0 :(得分:0)
我做了一些研究,发现只是在我的服务中使用$ rootScope是在它们之间广播我的数据的最简单方法。
我想对此提出一些意见。