2017-02-22 11 views
0

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

  1. のSessionState
  2. 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

私はいくつかの調査を行い、単にサービス内で$ rootScopeを使用するだけで、データをそれらの間でブロードキャストする最も簡単な方法であることがわかりました。

私はこれにいくつかの入力をしたいと思います。

関連する問題