我有一个Ember应用程序,其模型来自Ajax调用。第一个调用很有效,我有Ember.Route
的模型钩子返回一个Ajax调用的promise,它检索要显示的数据。
但是这个数据在后端经常发生变化,我想让webapp定期轮询服务器,比如每5秒轮询一次,然后更新或更好地将模型数据与新检索的数据完全交换。
使用Ember.js这样做的恰当方法是什么?我是Ember的新手,所以我对此感到有些失落。
答案 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数据,只需在控制器中添加递归setTimeout
或setInterval
并设置model
属性即可。这是simple example setting the model from a UI event。
如果您使用的是ember-data,我认为以下主题有更准确的解决方案: