如何使用angularjs刷新从REST服务器检索到的实时数据?

问题描述:

我想用angularjs从REST后端服务器检索表数据。数据发生了第二次变化。我希望使用angularjs实时更新数据。如何才能做到这一点?我是否强制angularjs定期进行ajax调用以刷新数据显示?如何使用angularjs刷新从REST服务器检索到的实时数据?

+0

你应该学习firebase。 https://www.firebase.com/quickstart/angularjs.html –

+0

正如已经回答的那样,你应该能够在你的$ resource的get/query请求中使用$ timeout – thescientist

是的,与REST没有其他方式,然后投票。要在浏览器视图中刷新数据本身,您可以在服务中使用$rootScope.$apply()(我假定您使用服务来获取数据),首先必须注入$rootScope的依赖关系。

编辑 其实你不应该使用$rootScope.$apply(),因为它可以导致难看$digest in progress错误。而是使用

$timeout(function(){ 
    // set data here... 
}) 

小费改进如果你不满意投票,如果你有编程的后端或在适当的位置来改变它,就是: 尝试使用的WebSockets

  • 它摆脱了投票,因为这时你的浏览器可以直接与服务器通信。
  • 它具有较少的开销。
  • 它在主流浏览器的支持,你可以使用带后备机制的库,例如SocketIO

然后,服务器可以随时推数据正确的话,当它可用。服务器端实现取决于您正在使用的后端,但现在大多数后端框架/服务器也支持websocket。

您必须使用投票或推送策略。但是,由于您已经知道资源定期更改,因此设置定期超时应该足以让您的应用程序每秒轮询REST服务器上的资源。检索完成后,AngularJS更新视图。所以,是的,你必须强迫AngularJS拨打服务电话。

+0

请问是否有这样做的示例源代码?即使是JavaScript,我也很新,更不用说AngularJS。 – user781486

+0

我建议花一些时间来了解Angular是如何工作的。在网上有几个教程可以帮助你入门。 window.setInterval有一个Angular包装,它很容易使用[AngularJS $ interval](http://docs.angularjs.org/api/ng.$interval) – kubuntu