【问题标题】:Why is my UI updated only once?为什么我的 UI 只更新一次?
【发布时间】:2014-06-11 16:43:33
【问题描述】:

我使用 AngularJS/signalR 完成了一个简单的 SPA,当应用程序启动时,它会向我的集线器 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 以查看是否有效?
  • 不,我应该把这条线放在哪里?此外,我已经开始使用“controller as”语法并且没有可用的 $scope。
  • 我会在回调中说,但如果你没有范围,那确实很难:)
  • 但我可以将其还原为使用注入 $scope 的常规控制器
  • 你可以只为这个变量尝试一下。

标签: angularjs signalr


【解决方案1】:

您需要$scope.$apply,因为回调不是作用域感知的,因为它不是从角度调用的。

我认为您将从我的名为 SignalR.EventAggregatorProxy 的库中受益匪浅 它围绕事件聚合模式设计,非常适合使用 Knockout 或 Angular 启用 MV* 的网站。

查看 wiki 进行设置 https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

演示项目 https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/tree/master/SignalR.EventAggregatorProxy.Demo.MVC4

我最近写的关于它的博客文章 http://andersmalmgren.com/2014/05/27/client-server-event-aggregation-with-signalr/

使用 nuget 安装

Install-Package SignalR.EventAggregatorProxy

【讨论】:

  • 看起来确实很有趣。我计划在第二步中查看 evaggretion,但您请为我提供解决我的问题并清理它的解决方案。我一定会看看的。
猜你喜欢
  • 1970-01-01
  • 2022-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 2018-03-13
  • 2014-01-17
相关资源
最近更新 更多