58

AngularJS 文档中有一些我似乎找不到的东西,或者我只是想念。

我正在使用 NodeJS 和 Express 在后端创建一个 Web 应用程序,并且我试图了解它如何在前端与 Angular 进行交互。特别是,我将有一个用于 Angular 的 JSON API 来从中获取信息。我希望前端始终是最新的。

我的问题是:

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

我似乎找到的每个示例都涉及客户端一次获取数据。不与服务器同步数据。

4

1 回答 1

82

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

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

$http.get('/someUrl').success(successCallback);

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

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

回顾一下:

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

不,双向绑定是在 Angular 模型和视图之间。

它自然会使用长轮询、短轮询或 websockets 吗?

默认情况下,Angular 不包括任何这些。您必须自己设置它们。

您是否需要 JQuery 来实现服务器-客户端同步,或者一切都可以用 Angular 完成?

$http 在广义上是 Angular 的 jQuery 的 $.ajax 等价物

您是否必须添加额外的代码才能使这种行为发生?我需要使用 $timeout 吗?

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

于 2013-03-14T18:53:58.347 回答