通过以下代码,我正在加载JSON一次:
$http.get('/data').success(function(mydata) {
$scope.mydata = mydata;
});
我想观察来自JSON的任何更改,然后重新加载新数据,以便我可以更新$ scope并因此更新视图。
我可以使用JavaScript setInterval
函数每1秒重新加载一次,但这看起来有点令人讨厌。更好的解决方案?也许用Angular本身写的东西?
答案 0 :(得分:2)
我将继续前进并假设您所使用的是Angular应用程序中的实时更新。现在有很多不同的选项可以在网上实现实时更新,但不幸的是,http不是其中之一。也没有任何基于HTTP(协议)的技术,因为它本质上是基于请求/响应的,并且不支持持久连接。
根据您的服务器端技术,您可以查看类似Socket.io(针对Node)或SignalR(针对.NET)的内容,因为它们在原始Web套接字之上提供了很好的抽象。还有一些很棒的服务可以让实时网络很容易实现。现在最好的之一叫做Firebase。它们最近被Google收购,并具有原生角度绑定,因此可以直接在控制器范围内使用实时推送通知。
如果您不拥有服务器,那么您就会发出请求,不幸的是,您将无法在计时器上执行基于HTTP的轮询。请注意,不要经常轮询,因为您可能会为客户创建性能损失,或者超出与您通信的后端的API限制。
答案 1 :(得分:0)
使用$interval进行长轮询是一种选择
另一种选择是使用WebSockets
通知客户数据更新