Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 为什么我的UI只更新一次?_Angularjs_Signalr - Fatal编程技术网

Angularjs 为什么我的UI只更新一次?

Angularjs 为什么我的UI只更新一次?,angularjs,signalr,Angularjs,Signalr,我用AngularJS/signalR做了一个简单的SPA,当应用程序启动时,它会向我的hub Hello发送一个通知 在客户端,我有一个由控制器管理的通知列表。此列表只更新了一次,但由于console.log(调试器显示,每次收到通知时This.messages都会增加),我可以看到每次都会调用我的回调。 我不明白为什么UI只在第一次调用时更新(当前客户端发出的调用) 下面是只工作一次的代码 NotificationCtrl.prototype.hello = function() {

我用AngularJS/signalR做了一个简单的SPA,当应用程序启动时,它会向我的hub Hello发送一个通知

在客户端,我有一个由控制器管理的通知列表。此列表只更新了一次,但由于console.log(调试器显示,每次收到通知时This.messages都会增加),我可以看到每次都会调用我的回调。 我不明白为什么UI只在第一次调用时更新(当前客户端发出的调用)

下面是只工作一次的代码

NotificationCtrl.prototype.hello =  function() {
        console.log("hello");
        this.messages.push(new Notification("Tom", "Now", "Is now connected"));
}

您需要
$scope.$apply
,因为回调不知道作用域,因为它不是从angular调用的

我想你会从我的signal.EventAggregatorProxy库中受益匪浅 它是围绕事件聚合模式设计的,非常适合具有敲除或角度锁定功能的MV*站点

请查看wiki以进行设置

演示项目

最近我写了一篇关于它的博客文章

使用nuget安装

Install-Package SignalR.EventAggregatorProxy

您是否尝试添加一个
$scope.$apply
以查看它是否有效?否,我应该将此行放在哪里?此外,我已经开始使用“controller as”语法,并且没有可用的$scope。我会在回调中说,但是如果你没有作用域,这确实会很困难:)但是我可以将其还原为使用带有$scope injected的常规控制器。你可以只为这一个变量尝试一下。它看起来确实非常有趣。我计划在第二步中研究evaggretion,但您可以提供一个解决方案来解决我的问题并将其清理干净。我一定会看一看的。