私はSignalR Webチャットアプリケーションを使用して簡単なAngularJSを作成しています。私は機能の多くを持っているが、私はサーバーがそれらを送信するなど、メッセージを受信するためのメンテナンス可能な手段を作りたい。私は最後の問題に取り組んでいます。私のSignalRDataサービスから、それが座っているサービスに戻る方法を見つけることができないようです。私の階層は以下の通りです。AngularJS/SignalR around data
- のSessionState
- 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");
};
}
})();