Подтвердить что ты не робот

AngularJS Автоматическая синхронизация данных между сервером и клиентом

В документах AngularJS есть что-то, что я не могу найти или, может быть, просто не хватает.

Я создаю веб-приложение с NodeJS и Express в фоновом режиме, и я пытаюсь понять, как он может взаимодействовать с Angular в интерфейсе. В частности, у меня будет API JSON для Angular для получения информации. Я хочу, чтобы передняя часть всегда была актуальной.

Мои вопросы:

  • Функция двусторонней привязки данных означает Angular ($ resource или $ http) автоматически извлекает данные с сервера каждые n секунд?
  • Естественно ли это использование длинных опросов, коротких опросов или веб-сайтов?
  • Вам нужен JQuery для достижения синхронизации с сервером и клиентом или все может быть сделано с Angular?
  • Вам нужно добавить дополнительный код, чтобы сделать это поведение случиться? Нужно ли использовать $timeout?

Каждый пример, который, как мне кажется, находит, заключается в том, что клиент извлекает данные один раз. Не синхронизировать данные с сервером.

4b9b3361

Ответ 1

Двусторонняя привязка в AngularJS относится к модели данных ($ scope) и вашему представлению (директивам). Например, если данные изменятся в вашей модели, представление будет автоматически обновляться. Аналогично, если пользователь изменяет данные в представлении, ваша модель будет автоматически обновляться.

Взаимодействие с веб-службами осуществляется через сервисный модуль $http. Таким образом, чтобы получить данные из вашего RESTful API, вы бы сделали что-то вроде:

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

Полная документация для $http находится на сайте AngularJS. Я думаю, вы найдете, что он очень похож на методы jQuery $.ajax. Вы легко настраиваете $http.get() для короткого опроса с помощью службы wail > w500 > $(в основном оболочкой для setTimeout).

Для обновлений в реальном времени между клиентом AngularJS и API-интерфейсом сервера вы можете посмотреть Socket.io. Он использует node.js для создания прямого соединения сокетов между браузером и сервером и имеет механизмы возврата (flash, long-polling) для старых браузеров. На GitHub есть проект шаблонов, который демонстрирует, как настроить AngularJS с помощью Socket.io: https://github.com/btford/angular-socket-io-seed

В ответ:

Имеется ли функция двусторонней привязки данных angular ($ resource или $http) автоматически извлекает данные с сервера каждые n секунд?

Нет, двусторонняя привязка между моделями и представлениями angular.

Естественно ли он использует длительный опрос, короткий опрос или веб-сайты?

Angular по умолчанию не включает никаких из них. Вы должны настроить их самостоятельно.

Вам нужен JQuery для достижения синхронизации сервер-клиент или все может быть выполнено с помощью Angular?

$http, в широком смысле, эквивалент angular jQuery $.ajax

Вам нужно добавить дополнительный код, чтобы это произошло? Нужно ли использовать $timeout?

Использовать $timeout для короткого опроса или сворачивать собственное решение для длинных опросов и/или веб-сайтов (см. проект angular-socket-io-seed).