AngularJS在服务器和客户端之间自动同步数据

vil*_*jou 58 angularjs angular-resource

AngularJS文档中有些东西我似乎无法找到,或者我可能只是遗漏了.

我正在后端创建一个带有NodeJS和Express的Web应用程序,我试图了解它如何与前端的Angular交互.特别是,我将为Angular提供一个JSON API来获取信息.我希望前端始终保持最新状态.

我的问题是:

  • 双向数据绑定功能是否意味着Angular($ resource或$ http)每n 秒自动从服务器获取数据?
  • 它是否自然地使用长轮询,短轮询或websockets?
  • 您是否需要JQuery来实现服务器 - 客户端同步或者是否可以使用Angular完成所有操作?
  • 您是否必须添加额外的代码才能实现此行为?我需要使用$ timeout吗?

我似乎发现的每个例子都涉及客户端获取数据一次.不与服务器同步数据.

ete*_*rps 81

AngularJS中的双向绑定是指数据模型($ scope)和您的视图(指令).例如,如果模型中的数据发生变化,视图将自动更新.同样,如果用户修改视图中的数据,您的模型将自动更新.

通过$ http服务模块进行与Web服务的交互.因此,要从RESTful API获取数据,您可以执行以下操作:

$http.get('/someUrl').success(successCallback);
Run Code Online (Sandbox Code Playgroud)

$ http的完整文档在AngularJS网站上.我想你会发现它与jQuery的$ .ajax方法非常相似.您可以使用angular的$ timeout服务(基本上是setTimeout的包装器)轻松设置$ http.get()进行短轮询.

要获得AngularJS客户端和服务器API之间的实时更新,您可能需要查看Socket.io.它使用node.js在浏览器和服务器之间创建实时套接字连接,并为旧版浏览器提供回退机制(flash,long-polling).GitHub上有一个样板项目,它演示了如何使用Socket.io设置AngularJS:https: //github.com/btford/angular-socket-io-seed

回顾:

双向数据绑定功能是否意味着Angular($ resource或$ http)每n秒自动从服务器获取数据?

不,Angular模型和视图之间存在双向绑定.

它是否自然地使用长轮询,短轮询或websockets?

Angular默认不包括任何这些.你必须自己设置它们.

您是否需要JQuery来实现服务器 - 客户端同步或者是否可以使用Angular完成所有操作?

从广义上讲,$ http是jQuery的$ .ajax的Angular等价物

您是否必须添加额外的代码才能实现此行为?我需要使用$ timeout吗?

使用$ timeout进行短轮询,或者为长轮询和/或websockets推送自己的解决方案(请参阅angular-socket-io-seed项目).

  • 非常有帮助 - 可能值得一提的是,在这种情况下,"模型"是客户端.这对我来说并不明显.你知道Angular是否正在计划使用socket.io或其他一些方式与API交谈,这是库中的默认值吗?我很惊讶他们的文档中没有提到这部分.谢谢! (2认同)