如何定期更新Ember的模型(例如在setInterval中)?

时间:2014-02-11 17:32:46

标签: javascript jquery ajax web-applications ember.js

我有一个Ember应用程序,其模型来自Ajax调用。第一个调用很有效,我有Ember.Route的模型钩子返回一个Ajax调用的promise,它检索要显示的数据。

但是这个数据在后端经常发生变化,我想让webapp定期轮询服务器,比如每5秒轮询一次,然后更新或更好地将模型数据与新检索的数据完全交换。

使用Ember.js这样做的恰当方法是什么?我是Ember的新手,所以我对此感到有些失落。

2 个答案:

答案 0 :(得分:33)

我认为这是Ember.run.later的一个很好的用例,它限制了函数调用的频率。

您可以向模型添加刷新,类似于:

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

答案 1 :(得分:2)

如果您不使用Ember数据,只需在控制器中添加递归setTimeoutsetInterval并设置model属性即可。这是simple example setting the model from a UI event

如果您使用的是ember-data,我认为以下主题有更准确的解决方案: