如何使用angularjs刷新从REST服务器检索到的实时数据?
我想用angularjs从REST后端服务器检索表数据。数据发生了第二次变化。我希望使用angularjs实时更新数据。如何才能做到这一点?我是否强制angularjs定期进行ajax调用以刷新数据显示?如何使用angularjs刷新从REST服务器检索到的实时数据?
是的,与REST没有其他方式,然后投票。要在浏览器视图中刷新数据本身,您可以在服务中使用$rootScope.$apply()
(我假定您使用服务来获取数据),首先必须注入$rootScope
的依赖关系。
编辑 其实你不应该使用$rootScope.$apply()
,因为它可以导致难看$digest in progress
错误。而是使用
$timeout(function(){
// set data here...
})
小费改进如果你不满意投票,如果你有编程的后端或在适当的位置来改变它,就是: 尝试使用的WebSockets:
- 它摆脱了投票,因为这时你的浏览器可以直接与服务器通信。
- 它具有较少的开销。
- 它在主流浏览器的支持,你可以使用带后备机制的库,例如SocketIO
然后,服务器可以随时推数据正确的话,当它可用。服务器端实现取决于您正在使用的后端,但现在大多数后端框架/服务器也支持websocket。
您必须使用投票或推送策略。但是,由于您已经知道资源定期更改,因此设置定期超时应该足以让您的应用程序每秒轮询REST服务器上的资源。检索完成后,AngularJS更新视图。所以,是的,你必须强迫AngularJS拨打服务电话。
请问是否有这样做的示例源代码?即使是JavaScript,我也很新,更不用说AngularJS。 – user781486
我建议花一些时间来了解Angular是如何工作的。在网上有几个教程可以帮助你入门。 window.setInterval有一个Angular包装,它很容易使用[AngularJS $ interval](http://docs.angularjs.org/api/ng.$interval) – kubuntu
你应该学习firebase。 https://www.firebase.com/quickstart/angularjs.html –
正如已经回答的那样,你应该能够在你的$ resource的get/query请求中使用$ timeout – thescientist