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

Как периодически обновлять модель Ember (например, в setInterval)?

У меня есть приложение Ember, модель которого исходит от вызова Ajax. Первый вызов отлично работает, у меня есть крючок модели Ember.Route, который возвращает обещание на вызов Ajax, который извлекает данные для отображения.

Но эти данные часто меняются в бэкэнд, и я хочу, чтобы веб-сервер периодически опросал сервер, скажем, каждые 5 секунд, и обновлял или, что еще лучше, свопировал данные модели полностью с недавно полученным.

Каков подходящий способ сделать это с помощью Ember.js? Im новый для Ember, поэтому Im немного потерял с этим.

4b9b3361

Ответ 1

Я думаю, что это хороший прецедент для Ember.run.later, который ограничивает частоту вызовов функций.

Вы можете просто добавить обновление к своей модели, похожее на это:

App.Model = DS.Model.extend({
   poll: function() {
      var _this = this;
      Ember.run.later( function() {
         _this.reload(); 
         _this.poll();
      }, 500);
   }.observes('didLoad'),
});

Ответ 2

Если вы не используете данные Ember, вы можете просто добавить рекурсивный setTimeout или setInterval в ваш контроллер и установить свойство model. Вот пример простой пример установки модели из события пользовательского интерфейса.

Если вы используете данные ember-data, я думаю, что следующие потоки имеют более точные решения: