Ember模型在间隔中重新加载

laz*_*zzi 14 ember.js ember-data

我有一个User模型,它具有纬度和经度属性,用于显示地图上的当前用户位置.

App.User = DS.Model.extend({
    firstName: DS.attr('string'),
    lastName: DS.attr('string'),
    email: DS.attr('string'),
    jobs: DS.hasMany("App.Job"),
    latitude:   DS.attr('number'),
    longitude: DS.attr('number'),
    measuredAt: DS.attr('date'),
});
Run Code Online (Sandbox Code Playgroud)

每隔给定间隔从服务器自动更新纬度和经度属性的最佳方法是什么?ember-data是否支持这种用例?我找不到具有此功能的任何样品.我想我需要在其中使用setInterval覆盖User类的find方法,这是正确的方法吗?

谢谢

laz*_*zzi 9

编辑:请参阅Dmitri Zagidulin的回答.

所以我明白了.现在我只需要在模型上覆盖didLoad方法,将来我可能需要更复杂的解决方案,但现在这已足够了.

didLoad: function(){
  var self = this;
  setInterval(function() {self.reload()}, 5*60*1000); //every 5 minutes
}
Run Code Online (Sandbox Code Playgroud)

如果有人需要重新加载更多模型,那么好的解决方案就是将其作为Mixin来实现.


Dmi*_*lin 8

对于那些现在遇到这个问题的人 - 不要使用setInterval,它被证明会导致严重的内存泄漏.

请改用Ember自己的Ember.run.later.

也可以看看:

编辑:2019年2月3日 - 更新损坏的链接.


dec*_*hov 5

该模型.reload()现在有一个方法,您可以在setInterval回调中使用它.请参阅/sf/answers/992845521/

PS手表#545.