Ember模型在间隔中重新加载

时间:2013-03-25 15:29:32

标签: ember.js ember-data

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

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'),
});

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

由于

3 个答案:

答案 0 :(得分:9)

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

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

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

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

答案 1 :(得分:8)

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

使用Ember自己的Ember.run.later代替。

另见:

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

答案 2 :(得分:5)

该模型现在具有.reload()方法,您可以在setInterval回调中使用该方法。见https://stackoverflow.com/a/14183507/363073

P.S。观看#545