Как периодически обновлять модель Ember (например, в setInterval)?
У меня есть приложение Ember, модель которого исходит от вызова Ajax. Первый вызов отлично работает, у меня есть крючок модели Ember.Route
, который возвращает обещание на вызов Ajax, который извлекает данные для отображения.
Но эти данные часто меняются в бэкэнд, и я хочу, чтобы веб-сервер периодически опросал сервер, скажем, каждые 5 секунд, и обновлял или, что еще лучше, свопировал данные модели полностью с недавно полученным.
Каков подходящий способ сделать это с помощью Ember.js? Im новый для Ember, поэтому Im немного потерял с этим.
Ответы
Ответ 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, я думаю, что следующие потоки имеют более точные решения: