【问题标题】:AngularJS / SignalR passing around dataAngularJS / SignalR 传递数据
【发布时间】:2017-02-22 12:51:40
【问题描述】:

我正在使用 SignalR 网络聊天应用程序创建一个简单的 AngularJS。我有许多功能可以工作,但是我想创建一种可维护的方式来在服务器发送消息时接收消息等等。我遇到了最后一个问题,我似乎找不到从 SignalRData 服务返回到它所在的服务的方法。所以我的层次结构如下。

  1. 会话状态
  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 中获取数据会话状态。

(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");
    };

}
})();

【问题讨论】:

    标签: angularjs signalr signalr.client


    【解决方案1】:

    我做了一些研究,发现在我的服务中简单地使用 $rootScope 是在它们之间广播我的数据的最简单方法。

    不过,我想对此提出一些意见。

    【讨论】:

      猜你喜欢
      • 2014-11-08
      • 2016-01-30
      • 2018-05-17
      • 2021-04-03
      • 2019-10-05
      • 2018-10-12
      • 2023-04-08
      • 1970-01-01
      • 2020-02-14
      相关资源
      最近更新 更多