“无法阅读财产'客户'未定义的“angularJS与SignalR

时间:2017-01-26 10:56:18

标签: .net angularjs signalr

我是signalR的新手。我正在做的是创建一个简单的应用程序,它将名称添加到数据库并显示给客户端,但我收到错误"无法读取属性'客户端'未定义" 这是我的angularJS代码

     myApp.controller('firstController', function ($scope, $http) {
    $scope.saveName = function () {
        $http.post("/Name/saveName/", { userName: $scope.name }).then(function (response) {
            $scope.loadNames();
        })
    }
    $scope.loadNames = function () {
        $http.get("/Name/getName/").then(function (response) {
            $scope.nameList = response.data;
        })
    }
    $scope.loadNames();
    $scope.hub = $.connection.myHub;
    $scope.notify = function () {
        $scope.hub.client.UserAddHub = function (name) {
            $scope.$apply(function () {
                $scope.nameList.push(name);
            })
        }
        $.connection.hub.start();
    }
    $scope.notify();
});

这是我在服务器端写的

    private static IHubContext userHubContext = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
operations op = new operations();
        op.save(userName);
        userHubContext.Clients.All.UserAddHub(userName);

这是我的中心课程

[HubName("myHub")]
public class MyHub : Hub
{

}

我错过了什么。有什么建议吗?谢谢。

2 个答案:

答案 0 :(得分:1)

如果您使用外部脚本加载signalR,请确保在Layout.cshtml(或您正在使用的任何其他布局)中添加此引用

<script src="~/signalr/hubs"></script>

添加signalR后。代码似乎没有任何问题,我只能看到你的集线器是空的。

修改:对于未来的读者,请仔细检查是否已将app.MapSignalR();添加到Startup.cs类中。

答案 1 :(得分:-1)

在$ scope.hub行之后添加:

$scope.hub.client = {};

还注意到你打电话给$ .connection.myHub;然后你在$ .connection.hub上调用start()方法......应该是$ .connection.myHub.start();或者应该是$ scope.hub.start(); ?